SQL添加选择字段更改结果

时间:2015-04-10 15:37:08

标签: mysql sql

我试图调和这两个问题

SELECT DISTINCT(customer_id), date FROM questions
WHERE question_id = 283 OR
question_id = 282

返回139行

SELECT DISTINCT(customer_id) FROM questions
WHERE question_id = 283 OR
question_id = 282

返回138行(不选择日期)

表格如下

quesiton_id           date
--------------------------------
288                 1/1/2010
288                 1/1/1999
283                 1/1/2006
283                 1/1/2007
283                 null

这种行为怎么可能?

1 个答案:

答案 0 :(得分:0)

当你写:

SELECT DISTINCT(customer_id), date
FROM  . . . 

你只会让自己感到困惑。您正在将DISTINCT视为一个函数。事实并非如此。最好将其视为SELECT关键字的一个选项。无论您使用哪个括号,都将其解释为:

SELECT DISTINCT customer_id, date
FROM  . . . 

如果您正在学习SQL,那么您真的需要DISTINCT关键字是非常罕见的。您可以使用GROUP BY来编写查询 - 而查询计划通常是相同的。所以,我建议你把查询写成:

SELECT customer_id, date
FROM questions
WHERE question_id IN (282, 283)
GROUP BY customer_id, date ;