如何在此SQL查询中不重复自己?

问题描述

我已经开始学习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') 

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...