sql >> Databáze >  >> RDS >> Mysql

MYSQL používá 'LIKE' v klauzuli 'WHERE' pro vyhledávání v poddotazu

Použití JOIN:

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

...ale mohou existovat duplikáty, pokud je v myothertable více než jedna shoda pro danou mytable záznam.

Pomocí EXISTS:

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

Pomocí Fulltext Search MATCH (vyžaduje myothertable je MyISAM)

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


  1. Navrhování dalších dotazů na archaický pravopis (např. Google's Did You Mean)

  2. Aktualizovat tabulku pomocí JOIN na SQL Server?

  3. Seskupit MySQL podle hodin

  4. Sloupec nemůže mít hodnotu null Mysql