Mysql
 sql >> Datenbank >  >> RDS >> Mysql

find_in_set und find_in_set unerwartetes Ergebnis

Die Bedingung im WHERE Klausel ist:

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

was äquivalent ist zu:

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

was bedeutet, dass Sie ausschließen möchten die Zeilen für which:
host ist in KnownHosts enthalten oder user ist in KnownUsers enthalten .

Für Ihre Beispieldaten also die Zeile:

unknownuser | 192.168.1.5

wird nicht zurückgegeben, weil host = '192.168.1.5' und es ist enthalten in KnownHosts (='192.168.1.5' ).

Ändern Sie vielleicht den logischen Operator in OR , wenn Sie diese Logik anwenden möchten:

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