MySQL,其中2/x

MySQL,其中2/x,mysql,sql,select,where-clause,Mysql,Sql,Select,Where Clause,我怎样才能只得到行,其中2个(或更多)where子句的many是真的 例如: 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)."'" O

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

例如:

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语句(每一列都有另一列-(名称和名称2)或(名称和名称3)或(名称和名称4)或…)

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

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

请注意,每个条件周围的括号都是必需的,以防止任何运算符优先级问题。

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

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

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

是否将恰好是4个类似条件或更多?不同的是,我在运行时生成SQL(类似于和“=”),但Nick完美地解决了问题。是否将恰好是4个类似条件或更多?不同的是,我在运行时生成SQL(如和“=”),但Nick完美地解决了这个问题。