【发布时间】:2020-10-06 00:20:43
【问题描述】:
我有一个非常令人费解的问题。当我执行以下查询时:
SELECT DISTINCT posts.pid FROM posts
INNER JOIN questions
ON questions.pid = posts.pid
INNER JOIN tags
ON tags.pid = posts.pid
WHERE tags.tag = 'Relational' COLLATE NOCASE;
在选择带有“关系”标签的帖子时,它能够返回以下 ID: 001、002、014、015。现在,当我执行提取另一个标签的查询时,如下所示:
SELECT DISTINCT posts.pid FROM posts
INNER JOIN questions
ON questions.pid = posts.pid
INNER JOIN tags
ON tags.pid = posts.pid
WHERE tags.tag = 'Database' COLLATE NOCASE;
它能够返回 001、002、003、009、015、022。应该清楚 id 001、002 和 015 是重叠的 id,因此当我使用 AND 运算符时,它应该是我的预期回报.但是,当我执行以下查询时:
SELECT DISTINCT posts.pid FROM posts
INNER JOIN questions
ON questions.pid = posts.pid
INNER JOIN tags
ON tags.pid = posts.pid
WHERE tags.tag = 'Relational' COLLATE NOCASE
AND tags.tag = 'Database' COLLATE NOCASE;
我得到一个空的结果。我已经尝试了很多东西,包括在条件和 AND 子句周围添加括号,我无法解决这个问题。谁知道是什么原因?
【问题讨论】: