user_list
+---------------------+
+ user_id + name +
+---------------------+
+ 001 + Anna +
+---------------------+
+ 004 + David +
+----------------------
...
job_list
+---------------------+
+ user_id + job +
+---------------------+
+ 001 + Norse +
+---------------------+
+ 002 + Doctor +
+---------------------+
+ 003 + Sales +
+----------------------
+ 004 + Driver +
+----------------------
...
我想找到job_list
存在但user_list
不存在
例如,某些用户可能因某种原因被删除
但他们的记录仍留在数据库中,所以我想找到它们并删除
在这种情况下,返回结果应为002和003
SELECT * FROM `user_list` ul, `job_list` jl WHERE jl.user_id NOT LIKE ul.user_id;
我尝试了上面的SQL命令但没有用,请帮忙
答案 0 :(得分:2)
SELECT * FROM job_list AS jl
LEFT JOIN user_list AS ul ON ul.user_id = jl.user_id
WHERE ul.user_id IS NULL
应该做的工作
答案 1 :(得分:1)
试试这个
SELECT *
FROM `job_list` jl
WHERE NOT EXISTS (SELECT 1 FROM user_list ul WHERE ul.user_id=jl.user_Id)
答案 2 :(得分:0)
如果你不在乎abaut知道什么记录删除,你只是想删除它们这样的东西应该做的伎俩:(警告:子查询是极其低效的)
delete from job_list where user_id not in ( select user_id from user_list)
如果你想在删除它们之前知道这些记录,你可以加入表格:
SELECT * FROM job_list
LEFT JOIN user_list
ON user_list .user_id = job_list.user_id
WHERE user_list.user_id = NULL
答案 3 :(得分:-2)
SELECT user_id FROM job_list MINUS SELECT user_id FROM user_list;