我有2个表:voters
,banned_domains
我想所有的选票,除非禁止域 此查询工作以及MySQL的NOT IN或NOT REGEXP
SELECT * FROM `voters` email NOT REGEXP('tempmail.com|tempmail.org')
我想请求另一个比较表,但是这个代码不工作:
SELECT * FROM `voters` email NOT IN(SELECT domain FROM banned_domains)
非常感谢
UPDATE:我对不完整的数据表示歉意。 在voters
我有一个完整的电子邮件地址 例如“[email protected]” 但在banned_domains
我只有域名 例如“mail.com”
我改变了查询,但它不工作
SELECT * FROM voters
WHERE DISTINCT RIGHT( voters.email , LENGTH( voters.email) - LOCATE( '@', voters.email)) NOT IN (SELECT domain FROM banned_domains)
ERROR:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT RIGHT( voters.email , LENGTH( voters.email) - LOCATE( '@', voters.e' at line 2
当你说“不行”,是它;语法错误,结果错误,什么?此外,看起来像缺少'WHERE' – 2014-09-23 13:21:38
'NOT IN'完全匹配,它不会执行REGEXP匹配。 – Barmar 2014-09-23 13:22:59
这两个查询都缺少where子句。如果第一个作品,我认为这只是一个印刷错误。 – 2014-09-23 13:24:11