Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

resultado inesperado find_in_set e find_in_set


A condição em WHERE cláusula é:
NOT FIND_IN_SET(host, KnownHosts) AND NOT FIND_IN_SET(user, KnownUsers)

que é equivalente a:
NOT (FIND_IN_SET(host, KnownHosts) OR FIND_IN_SET(user, KnownUsers))

o que significa que você deseja excluir as linhas para as quais:
host está incluído em KnownHosts ou user está incluído em KnownUsers .


Então, para seus dados de amostra, a linha:
unknownuser | 192.168.1.5

não será retornado, porque host = '192.168.1.5' e está incluído em KnownHosts (='192.168.1.5' ).

Talvez mude o operador lógico para OR , se esta for a lógica que você deseja aplicar:
NOT FIND_IN_SET(host, KnownHosts) OR NOT FIND_IN_SET(user, KnownUsers)