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

MYSQL verwendet „LIKE“ in der „WHERE“-Klausel, um in Unterabfragen zu suchen

Mit einem JOIN:

SELECT a.*
  FROM mytable a
  JOIN myothertable b ON a.name LIKE CONCAT('%', b.name, '%')

...aber es könnte Duplikate geben, wenn es mehr als eine Übereinstimmung in myothertable gibt für eine bestimmte mytable aufnehmen.

Verwendung von EXISTS:

SELECT a.*
  FROM mytable a
 WHERE EXISTS (SELECT NULL 
                 FROM myothertable b 
                WHERE a.name LIKE CONCAT('%', b.name, '%'))

Mit Volltextsuche MATCH (benötigt myothertable ist MyISAM)

SELECT a.*
  FROM mytable a
  JOIN myothertable b ON MATCH(a.name) AGAINST (b.name)