Sql 将多个OR运算符与AND运算符组合

Sql 将多个OR运算符与AND运算符组合,sql,mysqli,operators,Sql,Mysqli,Operators,我在编写一个包含多个OR运算符和and运算符的查询时遇到了一些困难 目前,我的查询如下所示: SELECT * FROM `contentvalues` WHERE (`contentid` = 16 OR `contentid` = 18) AND `value` <= 180; SELECT*FROM`contentvalues`WHERE(`contentid`=16或`contentid`=18)和`value`将同一变量的或逻辑放入SQL子句中 像这样试试 SELECT * F

我在编写一个包含多个OR运算符和and运算符的查询时遇到了一些困难

目前,我的查询如下所示:

SELECT * FROM `contentvalues` WHERE (`contentid` = 16 OR `contentid` = 18) AND `value` <= 180;

SELECT*FROM`contentvalues`WHERE(`contentid`=16或`contentid`=18)和`value`将同一变量的
逻辑放入SQL子句中

像这样试试

SELECT * FROM `contentvalues` WHERE contentid in (16,18) AND value <= 180;

SELECT*FROM`contentvalues`,其中contentid在(16,18)和value中,您得到的结果是正确的。我猜您对您的查询实际上是如何执行的感到困惑。所以你的问题是:

SELECT * FROM `contentvalues` WHERE (`contentid` = 16 OR `contentid` = 18) AND `value` <= 180;

从`contentvalues`中选择*其中(`contentid`=16或`contentid`=18)和`value`如果列中的值是字符串,则可以使用
contentvalues
中选择*其中contentid位于(16,18)和
转换(值,有符号整数)您描述的问题不是。
WHERE
子句的谓词似乎完全符合您的要求。我认为您输入了一个错误:预期结果应该是
18250
。我想你是说
18150
@EdwinStoteler是的,thanks@GiorgosBetsos是的,我刚刚意识到我的问题写得很糟糕。我试图删除,但无法删除,因为它有答案。实际上,您可以删除它。我认为只有当答案被接受时,删除才被禁用。这相当于OP的
WHERE
子句。它不应该产生不同的结果。
SELECT * FROM `contentvalues` WHERE (`contentid` = 16 OR `contentid` = 18) AND `value` <= 180;
`contentid` = 16 AND `value` <= 180   //gives 16, 110
OR `contentid` = 18 AND `value` <= 180   //gives 18, 150