minus在mysql里怎么用,MySQL中的MINUS运算符?

I have some tables where I am getting the emails. And I don't want to get the emails in table tbl_unsubscribe. I wrote the query like :

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

But I am getting a syntax error. Is the MINUS operator not valid for MySQL ?

解决方案

A NOT IN() subquery can be used here, since MySQL doesn't support MINUS.

SELECT

cand_email

FROM tbl_cand_data

WHERE can_email NOT IN (SELECT un_email FROM tbl_unsubscribe)

It can also be done with a LEFT JOIN, looking for NULLs in the un_email column:

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

To exclude them from a bunch of UNION operations, wrap the UNION group in () as a subquery:

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值