SELECT current_raised,segment FROM gizmos
where created_at >= "2012-03-01"
返回600多行
SELECT "current_raised","segment"
UNION
(SELECT current_raised,segment FROM gizmos
where created_at >= "2012-03-01")
返回180行
为什么会这样?
答案 0 :(得分:6)
union
会从结果集中删除每个重复的current_raised, segment
对。请改为union all
。
这是正在发生的事情的减少example。
答案 1 :(得分:-1)
这是标准SQL的一个稍微令人困惑的功能:SELECT
的默认限定符为SELECT ALL
,但UNION
的默认限定符为UNION DISTINCT
。
您的第一个查询隐式使用SELECT ALL
并在结果中返回重复的行,这不是很好。通过明确使用SELECT DISTINCT
来纠正第一个查询。