我有这个问题:
select * from users where mailaddress
NOT like '%banned_domain1.com%'
AND mailaddress NOT like '%banned_domain2.com%'
AND mailaddress NOT like '%banned_domain3.com%' ;
我想让它变得更简单,我从命令行执行了这个查询:
select * from users where mailaddress
NOT like ('%banned_domain1.com%','%banned_domain2.com%','%banned_domain3.com%') ;
我收到MySQL错误:
ERROR 1241 (21000): Operand should contain 1 column(s)
答案 0 :(得分:1)
您可以使用NOT REGEXP
SELECT * FROM users WHERE mailaddress NOT REGEXP 'banned_domain1.com|banned_domain2.com|banned_domain3.com';
答案 1 :(得分:1)
而不是“喜欢”使用“在”并格式化电子邮件地址,如下所示:
select * from users where SUBSTR(mailaddress, INSTR(mailaddress, '@') + 1)
NOT IN ('banned_domain1.com','banned_domain2.com','banned_domain3.com');
SUBSTR会删除@及其前面的任何内容,只留下域名,然后你就可以在没有使用IN的通配符的情况下进行完美的比较。
干杯!
答案 2 :(得分:0)
你必须每次都提到这个专栏
select * from tasks where title NOT LIKE '%eating lunch%' AND title NOT LIKE '%eating breakfast%' AND title NOT LIKE '%a new task%'
然而,正如Bruno Domingues所说,使用NOT IN会更容易
答案 3 :(得分:0)
您无法简化查询。每个条件你需要一个LIKE。