MySQL, где 2 из х - PullRequest
       37

MySQL, где 2 из х

0 голосов
/ 02 мая 2019

Как я могу получить только строки, где 2 (или более), где пункт из многих истинен?

Например:

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) ИЛИ (имя И name4) ИЛИ ...)

1 Ответ

2 голосов
/ 02 мая 2019

В MySQL вы можете использовать тот факт, что он обрабатывает логические выражения как 1 или 0 в числовом контексте.Таким образом, чтобы проверить, что 2 или более условий выполняются, вы можете написать

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

Обратите внимание, что круглые скобки вокруг каждого условия необходимы для предотвращения любых проблем с приоритетом оператора.

...