使用LEFT JOIN
s,您只需要验证它user_id
是否NOT NULL
在至少一个表中:
SELECT
[user].user_id
FROM
[user]
/* LEFT JOIN against each of the 3 tables */
LEFT JOIN full_time_job ft ON [user].user_id = ft.user_id
LEFT JOIN part_time_job pt ON [user].user_id = pt.user_id
LEFT JOIN internship intern ON [user].user_id = intern.user_id
WHERE
/* And check that *any* of them has a non-null user_id */
ft.user_id IS NOT NULL
OR pt.user_id IS NOT NULL
OR intern.user_id IS NOT NULL
如果可能,最好修复架构...
但从长远来看,如果可能的话,这些都应该合并到一个表中,其中有一列指示作业类型,而不是 3 个类似的表。
示例: http ://sqlfiddle.com/#!2/2cd2c/1
在上面的示例中,用户5,6
不存在于 3 个表中的任何一个中。