Mysql
 sql >> база данни >  >> RDS >> Mysql

find_in_set и find_in_set неочакван резултат

Условието в WHERE клаузата е:

NOT FIND_IN_SET(host, KnownHosts) AND NOT FIND_IN_SET(user, KnownUsers)

което е еквивалентно на:

NOT (FIND_IN_SET(host, KnownHosts) OR FIND_IN_SET(user, KnownUsers))

което означава, че искате да изключите редовете, за които:
host е включен в KnownHosts или user е включен в KnownUsers .

Така че за вашите примерни данни, редът:

unknownuser | 192.168.1.5

няма да бъдат върнати, защото host = '192.168.1.5' и е включени в KnownHosts (='192.168.1.5' ).

Може би сменете логическия оператор на OR , ако това е логиката, която искате да приложите:

NOT FIND_IN_SET(host, KnownHosts) OR NOT FIND_IN_SET(user, KnownUsers)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySQL - включва множествено число, но изключва единствено число

  2. MySQL:Избягвайте да избирате колони с един и същи потребителски идентификатор

  3. Използване на GROUP_CONCAT за подзаявка в MySQL

  4. Изглежда не мога да свържа моята PHP страница с моя SQL тестов сървър и база данни

  5. Разлики между INDEX, PRIMARY, UNIQUE, FULLTEXT в MySQL?