mysql - 左连接而不是 ISSET

标签 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

所以想要获取未添加到表中的站点 请使用类型确认,例如 1。

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

接下来怎么办?

最佳答案

编写此查询的自然方法是作为 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 翻译:“想要获取未添加到类型 = 1 的 Confirm 的网站”。

关于mysql - 左连接而不是 ISSET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22505340/

相关文章:

php - Android 使用 Httpclient 登录

php - 带约束的 Eloquent 多重嵌套关系

c# - 从一个表中读取并插入到另一个表中 - 一次一行

sql - 使用 PostgreSQL 删除行重复并获得最高值

javascript - Ajax获取sql查询结果

java - 如何从Java中的数据库应用程序的jar文件创建exe文件?

sql - SELECT ID 存在于第二个表中的行的最有效方法

c++ - SQLite3 C++ 查询靠近 "CASE": syntax error

sql - 多列子查询更新... SQL

php - PHP Codeigniter 中的 URL 重写。