Mysql
 sql >> Base de données >  >> RDS >> Mysql

find_in_set et find_in_set résultat inattendu

La condition dans WHERE clause est :

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

ce qui équivaut à :

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

ce qui signifie que vous souhaitez exclure les lignes pour lesquelles :
host est inclus dans KnownHosts ou user est inclus dans KnownUsers .

Donc, pour vos exemples de données, la ligne :

unknownuser | 192.168.1.5

ne sera pas renvoyé, car host = '192.168.1.5' et il est inclus dans KnownHosts (='192.168.1.5' ).

Peut-être changer l'opérateur logique en OR , si c'est la logique que vous souhaitez appliquer :

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