sql >> Databasteknik >  >> RDS >> Mysql

hur använder man en like med en join i sql?

Använder INSTR :

SELECT *
  FROM TABLE a
  JOIN TABLE b ON INSTR(b.column, a.column) > 0

Använder LIKE:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'

Använder LIKE, med CONCAT:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')

Tänk på att du i alla alternativ antagligen vill flytta kolumnvärdena till versaler INNAN du jämför för att säkerställa att du får matchningar utan att bry dig om skiftlägeskänslighet:

SELECT *
  FROM (SELECT UPPER(a.column) 'ua'
         TABLE a) a
  JOIN (SELECT UPPER(b.column) 'ub'
         TABLE b) b ON INSTR(b.ub, a.ua) > 0

Det mest effektiva kommer i slutändan att bero på FÖLLA planen utdata.

JOIN satser är identiska med att skriva WHERE klausuler. JOIN syntax kallas också ANSI JOINs eftersom de var standardiserade. Icke-ANSI JOINs ser ut så här:

SELECT *
  FROM TABLE a,
       TABLE b
 WHERE INSTR(b.column, a.column) > 0

Jag tänker inte störa mig på ett icke-ANSI LEFT JOIN-exempel. Fördelen med ANSI JOIN-syntaxen är att den separerar det som sammanfogar tabeller från vad som faktiskt händer i WHERE klausul.



  1. Spark JoinWithCassandraTable på TimeStamp-partitionsnyckeln STOCK

  2. Implementera sökning (hoppa över / ta) funktionalitet med denna fråga

  3. mysqlimport:Fel:1045, Åtkomst nekad

  4. Hur man lägger till ELLER släpper kolumn från CDC-aktiverad tabell utan att förlora data i SQL Server Database - SQL Server Tutorial