LEFT JOIN而非ISSET

时间:2014-03-19 12:07:26

标签: mysql sql

我有两张桌子:

Site:
id | name
 1 | google
 2 | stackoverflow
 3 | cnn.com

Confirm:
id | site_id | type // (type = 1, 2 or 3)
 1 | 1       | 2
 2 | 2       | 1

所以并且希望得到未添加到表格中的网站以类型为例确认。

SELECT * 
  FROM Site 
       LEFT JOIN Confirm 
            ON Site.id = Confirm.site_id

什么是下一个?

2 个答案:

答案 0 :(得分:2)

编写此查询的一种自然方式是NOT EXISTS查询:

SELECT s.*
FROM Sites s
WHERE NOT EXISTS (SELECT 1 FROM Confirm c WHERE c.site_id = s.id AND type = 1);

几乎是问题陈述的1-1翻译:“希望将未添加到Confirm的网站设为type = 1”。

答案 1 :(得分:0)

我不明白你的意思。但是,如果您对如何使用数据库中的结果集存在疑问,请查看此内容,也许它可以帮助您:http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg