【问题标题】:MySQL Where 2 of xMySQL where 2 of x
【发布时间】:2019-05-02 10:55:34
【问题描述】:

我怎样才能只得到行,其中 2 个(或更多)许多的 Where 子句是真的?

例如:

SELECT * 
FROM A 
WHERE CONVERT(AES_DECRYPT(name,'".$this->key."'),CHAR) LIKE '%".$this->escape($name)."%'" 
  OR CONVERT(AES_DECRYPT(name2,'".$this->key."'),CHAR) = '".$this->escape($name2)."'" 
  OR CONVERT(AES_DECRYPT(name3,'".$this->key."'),CHAR) = '".$this->escape($name3)."'" 
  OR CONVERT(AES_DECRYPT(name4,'".$this->key."'),CHAR) = '".$this->escape($name4)."'" 
.....

有没有一种简单的方法可以只获得 2 个(或更多)匹配的结果,而无需创建巨大的 SQL 语句(每列与其他列 - (name AND name2) OR (name AND name3) OR (name AND名称4) 或...)

【问题讨论】:

  • 会不会正好是 4 个 LIKE 条件或更多?
  • 不同,我在运行时生成 SQL(LIKE 和“=”),但 Nick 完美解决了问题。

标签: mysql sql select where-clause


【解决方案1】:

在 MySQL 中,您可以利用它在数字上下文中将布尔表达式视为 1 或 0 的事实。因此,要检查 2 个或多个条件是否为真,您可以编写

WHERE (condition 1) + (condition 2) + ... + (condition n) >= 2

请注意,每个条件都需要括号以防止出现任何运算符优先级问题。

【讨论】:

    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2013-02-28
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多