SELECT adminTags.Tag, URL, Votes
FROM `adminTags`
LEFT JOIN `Tags` ON adminTags.Tag = Tags.Tag
我正在使用表格标签加入表格管理标签。
我怎么能先
SELECT *
FROM `Tags`
WHERE URL = "$site"
然后将其加入adminTags?
答案 0 :(得分:1)
SELECT adminTags.Tag, URL, Votes
FROM `adminTags` LEFT JOIN `Tags`
ON adminTags.Tag = Tags.Tag
WHERE `Tags`.URL = "$site"
答案 1 :(得分:1)
你的意思是......
SELECT adminTags.Tag, URL, Votes FROM `adminTags`
LEFT JOIN `Tags` ON adminTags.Tag = Tags.Tag AND Tags.URL = "$site"
我怀疑您首先尝试添加WHERE URL = "$site"
,这有效地使其成为INNER JOIN
(因为如果WHERE
也不满意,URL
就不会满意。< / p>
将条件放在ON
中即可解决 - 只有在匹配时才会加入。
答案 2 :(得分:0)
SELECT adminTags.Tag, adminTags.URL, adminTags.Votes FROM `Tags`
LEFT JOIN `adminTags` ON adminTags.Tag = Tags.Tag
WHERE adminTags.URL = "$site"
答案 3 :(得分:0)
使用OUTER连接时有两个选项,结果可能非常不同,因此细节很重要。
SELECT at.Tag,
t.url, t.votes
FROM adminTags at
LEFT JOIN tags t ON t.tag = at.tag
AND t.url = $site
此查询将在加入 之前应用t.url = $site
,为您提供预过滤结果。
SELECT at.Tag,
t.url, t.votes
FROM adminTags at
LEFT JOIN tags t ON t.tag = at.tag
WHERE t.url = $site
上述查询在加入 后应用 条件。它不会“将OUTER JOIN转换为INNER JOIN” - 它会在OUTER JOIN
完成后过滤结果集。
在此示例中,结果集之间没有区别。但是,如果URL列说不可为空(值不能为NULL),则可以检查NULL(这会告诉您ADMINTAGS
没有相应的TAGS
记录:
SELECT at.Tag,
t.url, t.votes
FROM adminTags at
LEFT JOIN tags t ON t.tag = at.tag
WHERE t.url IS NULL
...而对于NULL
的所有引用,以下内容将返回TAGS
(虽然没有准确地展示没有相关ADMINTAGS
行的TAGS
行:
SELECT at.Tag,
t.url, t.votes
FROM adminTags at
LEFT JOIN tags t ON t.tag = at.tag
AND t.url IS NULL