NOT IN()
サブクエリはここで使用できます。これは、MySQLがMINUS
をサポートしていないためです。
SELECT
cand_email
FROM tbl_cand_data
WHERE can_email NOT IN (SELECT un_email FROM tbl_unsubscribe)
またun_email
列内のNULLを探して、LEFT JOIN
で行うことができます。
SELECT cand_email
FROM
tbl_cand_data
LEFT JOIN tbl_unsubscribe ON tbl_cand_data.can_email = tbl_unsubscribe.un_email
WHERE tbl_unsubscribe.un_email IS NULL
は、UNION
操作の束から除外サブクエリとして()
にUNION
グループをラップします:
SELECT email FROM (
SELECT cand_email AS email FROM tbl_cand_data
UNION
SELECT emp_email AS email FROM tbl_emp_data
UNION
SELECT email FROM AS email tbl_uptade_list
UNION
SELECT feed_email AS email FROM tbl_feedback
UNION
SELECT admin_email AS email FROM tbl_admin_emails
) email_list
WHERE email NOT IN (SELECT un_email FROM tbl_unsubscribe)
[MySQLでのMINUS?]の可能複製(http://stackoverflow.com/questions/184592/minus-in-mysql) – geoffspear
は、問題のSQLを指摘したいですそれはMySQLで有効です。 SQLには "MINUS"もありませんが、質問はMINUS(MySQLが以下で説明するようにサポートしていない)についてです。 – spinkus