sql >> Database teknologi >  >> RDS >> Mysql

MYSQL bruger 'LIKE' i 'WHERE'-klausulen til at søge i underforespørgsel

Brug af en JOIN:

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

...men der kan være dubletter, hvis der er mere end ét match i myothertable for en given mytable optage.

Brug af EXISTS:

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

Brug af Fuld tekstsøgning MATCH (kræver myothertable er MyISAM)

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


  1. Ret "FEJL:mangler FROM-klausulindtastning for tabel" i PostgreSQL, når du bruger UNION, EXCEPT eller INTERSECT

  2. Android sqlite db.query fører til CursorIndexOutOfBoundsException

  3. FEJL 2002 (HY000):Kan ikke oprette forbindelse til lokal MySQL-server via socket '/tmp/mysql.sock'

  4. Oracle FOR LOOP REVERSE Eksempel