我有一些表格,我收到电子邮件.而且我不想在桌面上收到电子邮件tbl_unsubscribe.我写的查询如下:
SELECT cand_email FROM tbl_cand_data
UNION
SELECT emp_email FROM tbl_emp_data
UNION
SELECT email FROM tbl_uptade_list
UNION
SELECT feed_email FROM tbl_feedback
UNION
SELECT admin_email FROM tbl_admin_emails
Run Code Online (Sandbox Code Playgroud)
但我收到语法错误.是MINUS运营商无效为MySQL?
Mic*_*ski 24
一个NOT IN()子查询可以在这里使用,因为MySQL不支持MINUS.
SELECT
cand_email
FROM tbl_cand_data
WHERE can_email NOT IN (SELECT un_email FROM tbl_unsubscribe)
Run Code Online (Sandbox Code Playgroud)
也可以使用a来LEFT JOIN查找un_email列中的NULL :
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
Run Code Online (Sandbox Code Playgroud)
要将它们从一堆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)
Run Code Online (Sandbox Code Playgroud)
不幸的是,MySQL不支持MINUS和INTERSECT,但你可以使用join得到相同的结果(对于减号;对于交叉为union)
SELECT cand_email FROM tbl_cand_data
LEFT JOIN tbl_unsubscribe ON (cand_email = un_email)
WHERE un_email IS NULL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33108 次 |
| 最近记录: |