【问题标题】:Using multiple ORs inside a query with one or more ANDs在带有一个或多个 AND 的查询中使用多个 OR
【发布时间】:2012-09-05 05:01:18
【问题描述】:

我有一个关于 mysql 查询的问题。

我想要实现的是编写一个查询:

SELECT * 
FROM Table
WHERE Col1 = 'something' AND Col2 = 'something' AND 
         ( Col3 = 'Something' OR Col3 = 'Something');

所以它看起来和你在 php 中使用条件语句一样:(注意 or ;) 周围的大括号)

if ( $i == 'something' and ($k == 'something' || $k == 'something') ){
//Do something
}

或者也许有另一种/更好的方法来做到这一点?

(编辑) 我现在知道查询是正确的。谢谢你向我确认。以下是一直失败的查询的一部分。

SELECT * 
FROM Table
WHERE Condition1 = 'something'
AND(
 Enddate = DATE(DATE_ADD(NOW(), INTERVAL -1 DAY)) 
OR 
 Enddate = DATE(DATE_ADD(NOW(), INTERVAL -2 DAY)) 
) 

可能很明显,但我似乎找不到。

已解决

您好,很抱歉这个问题。 我刚刚发现查询在上述代码之后的某处模糊了一个右括号。

【问题讨论】:

  • 那么您面临的问题是什么?您的查询看起来不错。
  • 除了第二个 col3 的大小写错误之外,这看起来是有效的。你还有什么问题?
  • 问题是什么?你试过你的查询吗?我认为它的作品
  • 你在if条件下赋值,必须是if($i == "somethign" and ($k == "something" || $k == "something")){}
  • 你想要什么? php代码还是查询?

标签: php mysql operators conditional


【解决方案1】:

不用写OR条件,你可以使用IN子句

SELECT * 
FROM Table
WHERE Col1 = 'something1' AND 
      Col2 = 'something2' AND 
      Col3 IN('Something3','Something4');

【讨论】:

  • 这也是使查询更清晰的解决方案。谢谢
【解决方案2】:
SELECT * 
FROM Table
WHERE Condition1 = 'something'
AND(
 Enddate = DATE(DATE_ADD(NOW(), INTERVAL -1 DAY)) 
OR 
 Enddate = DATE(DATE_ADD(NOW(), INTERVAL -2 DAY)) 
)

不需要“as kuur”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多