2017-12-14 6 views
0

ich diese konvertieren möchten:Wie konvertiert WHERE IN-Klausel mit mehreren Werten zu RegExp oder wie

SELECT id,songTitle,artistName, trackId 
FROM songs 
WHERE (songTitle, artistName) IN (('come together', 'the beatles'),('all the small things', 'blink-182')) 

Um so etwas wie dieses, aber ich weiß nicht, die richtige Syntax:

SELECT id,songTitle,artistName, trackId 
FROM songs 
WHERE (songTitle, artistName) IN LIKE (('%come together%', '%the beatles%'),('%all the small things%', '%blink-182%')) 

Außer ich suche 100s mehr Lieder auf einmal. Wir könnten auch REGEXP verwenden, aber ich kenne einfach nicht die richtige Syntax für beide.

Antwort

1
  • WHERE (a,b) IN ((1,2), ...) ist sehr schlecht optimiert.
  • Führende Platzhalter in LIKE verhindern die Verwendung eines Indexes.
  • Sie können das Konstrukt, das Sie versuchten, nicht ausführen.

So Leistung beiseite, schauen wir uns an, wie die Aufgabe auszuführen:

WHERE (songTitle LIKE '%come together%' AND artistName LIKE '%the beatles%') 
    OR (....) 
    OR ... 

Sorry, es gibt keine Abkürzung.

REGEXP kann nicht helfen in diesem Fall.

FULLTEXT Indizierung ist etwas zu beachten, aber ich sehe nicht, dass es in diesem Beispiel helfen würde.

Verwandte Themen