首页 > 解决方案 > 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'

标签: mysqlsql

解决方案


我推荐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)它还应该具有非常好的性能特征。


推荐阅读