谁能告诉我这个查询有什么问题?此代码不起作用:
SELECT index_no FROM test_record_tbl WHERE year='2012' and year='2013';
此代码有效:
SELECT index_no FROM test_record_tbl WHERE year='2012' or year='2013';
你失败了,因为这一年(可能)永远不会同时是 2012 年和 2013 年。
And 是一个排他运算符,这意味着两个条件都必须为真才能使语句评估为真。
OR 表示一个,或另一个,或两者
如果我对您的理解正确,您想获取index_no
year2012
和2013
.
这个问题通常被称为Relational Division
.
SELECT index_no
FROM test_record_tbl
WHERE year IN ('2012', '2013')
GROUP BY index_no
HAVING COUNT(DISTINCT year) = 2
and
和之间有区别or
。
您永远不能同时拥有 2012 年和 2013 年,但一年可以落在 2012 年或 2013 年。
这就是为什么您的第一个 SQL 查询没有结果,而第二个却没有结果。