mysql - SQL检查是否有一条记录不存在并加入其他表
问题描述
我已经尝试并搜索了解决方案,但发现了什么。我想制作一个 SQL 代码来检查另一个表中是否不存在一条记录。
SQL 表:
Table name: ads
╔═══════╦═════════╗
║ ad_id ║ user_id ║
╠═══════╬═════════╣
║ 1 ║ Jeff ║
║ 2 ║ Jeff ║
╚═══════╩═════════╩
Second Table name: premium
╔═══════╦═════════╗
║ ad_id ║ user_id ║
╠═══════╬═════════╣
║ 1 ║ Jeff ║
如果 user_id = Jeff 在表 Premium 中没有记录,我想检查表 Ads。在这种情况下它几乎不应该显示我 ad_id = 2
我尝试过的是:
SELECT * FROM ads
INNER JOIN premium ON premium.ad_id = ads.id
WHERE premium.user_id = 'Jeff'
解决方案
我推荐not exists
:
select a.*
from ads a
where not exists (select 1
from premium p
where p.ad_id = a.ad_id and p.user_id = a.user_id
);
这几乎是您问题陈述的直接翻译。此外,带有索引的premium(ad_id, user_id)
它还应该具有非常好的性能特征。
推荐阅读
- python - 如何在 python 中正确使用反向函数作为凯撒密码?
- r - 在 R 中使用 grepl 的多个正则表达式
- ansible - 从 XML 文件中获取属性值
- php - 找不到驱动程序(PHP 和 Firebird)
- sql - 如何连接两个表并显示源?
- junit - 如何在要测试的类中实例化对象是Junit测试中的抽象类?
- spring-boot - 有人可以向我解释一下springboot注入的用例
- php - 告诉 Composer 包的位置
- android - 为修改其输入并传递给模拟对象的方法创建测试用例
- r - 使用 sapply 函数对数据名称下的结果进行分组并在 R 中绘图