volatile表是否会默认截断结果?

时间:2013-11-26 15:35:33

标签: sql teradata

我有两个问题应该带来相同的结果。但是,第二个查询只给出了部分结果(不到总数的10%)。


第一个查询提供超过400万行

SELECT id, amount 
FROM table1 t1 LEFT OUTER JOIN table2 t2  ON t1.id = t2.id;

其次只提供18,000条记录

CREATE  VOLATILE TABLE vt AS
(
SELECT id, amount 
FROM table1 t1 LEFT OUTER JOIN table2 t2  ON t1.id = t2.id;
)
WITH DATA
NO PRIMARY INDEX
ON COMMIT PRESERVE ROWS;

SELECT * 
  FROM vt ;

为什么第二个查询会给出较少的记录?

1 个答案:

答案 0 :(得分:2)

执行SHOW TABLE vt;时,您会注意到它是作为SET表创建的,该表不存储重复的行。只有18,000种不同(身份,数量)的组合。

将DISTINCT添加到您的第一个Select或使用CREATE MULTISET VOLATILE TABLE。