SQL多表去重:如何筛选未关联指定em_id的唯一app_id记录
解决方案:筛选未关联的APP记录
给你两种常用的SQL写法,都能实现你的需求,选自己容易理解的用就行:
方法1:使用NOT IN(最直观)
逻辑:先找出tbl_application_detail里em_id=2424的所有app_id,再从appName表里筛选出不在这个集合里的记录。
注意:你写的代码里用了application_id和application_name,但表结构里实际列名是app_id和app_name,要对应上,不然会报错。
SELECT app_id, app_name FROM appName WHERE app_id NOT IN ( SELECT app_id FROM tbl_application_detail WHERE em_id = 2424 );
方法2:使用LEFT JOIN + IS NULL(更稳妥,避免NULL值问题)
逻辑:把appName和筛选后的tbl_application_detail做左连接,左连接会保留appName的所有记录,没有匹配到的记录对应的右边表字段会是NULL,我们只取这些NULL的记录,就能得到未关联的APP。
SELECT a.app_id, a.app_name FROM appName a LEFT JOIN tbl_application_detail d ON a.app_id = d.app_id AND d.em_id = 2424 WHERE d.app_id IS NULL;
两种方法都能得到你想要的结果:
| app_id | app_name |
|---|---|
| APP001 | a |
| APP004 | d |
| APP005 | f |
内容的提问来源于stack exchange,提问作者Mango Play
相关产品推荐
相关产品推荐

