我试图调和这两个问题
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
这种行为怎么可能?
答案 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 ;