问题描述
我已经开始学习SQL,并且正在尝试减少重复。有人可以帮忙吗?
SELECT email
FROM users
WHERE campaign LIKE 'BBB-2'
AND test ='lions'
OR test = 'tigers'
OR test = 'bears';
解决方法
使用in
:
SELECT email
FROM users
WHERE campaign = 'BBB-2' AND test IN ('lions','tigers','bears');
注意:
-
这解决了原始查询中的逻辑优先性问题:
OR
ed条件需要用括号括起来 -
我用相等性检查替换了
LIKE
条件;当右操作数不包含通配符时,LIKE
没有意义
使用IN
:
WHERE campaign LIKE 'BBB-2' AND
test IN ('lions','bears');
作为奖励,这将修复查询中的逻辑错误。大概,您希望campaign
条件过滤所有行,而不仅仅是具有'lions'
的行。
您可以使用以下内容:
SELECT email
FROM users
WHERE campaign LIKE 'BBB-2'
AND test IN('lions','bears')