Heim >Datenbank >MySQL-Tutorial >Kann UNION ALL mit LIMIT 1 sequentielle Abfragen effizient simulieren?
Sequentielle selektive Abfragen mit UNION ALL
Problem:
Suche nach einer einzelnen Zeile in einer Datenbanktabelle mit schrittweise reduzierte Suchkriterien. Zum Beispiel:
SELECT * FROM image WHERE name LIKE 'text' AND group_id = 10 LIMIT 1
Wenn kein Ergebnis erhalten wird, führen Sie Folgendes aus:
SELECT * FROM image WHERE name LIKE 'text' LIMIT 1
Wenn immer noch kein Ergebnis, ausführen:
SELECT * FROM image WHERE group_id = 10 LIMIT 1
Kann dieser Vorgang mit einem einzigen ausgeführt werden? Ausdruck?
Lösung:
SELECT * FROM image WHERE name = 'name105' AND group_id = 10 UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE group_id = 10 LIMIT 1;
Erklärung:
Generisch Lösung:
Der obige Ansatz kann für eine beliebige Anzahl von Suchparametern verallgemeinert werden, indem der UNION ALL-Kette zusätzliche SELECT-Anweisungen hinzugefügt werden.
Überlegungen zu sortierten Ergebnissen:
Da die LIMIT-Klausel für das gesamte Ergebnis gilt, ist die Sortierung nicht besonders sinnvoll, da nur die erste Zeile berücksichtigt wird zurückgegeben.
Das obige ist der detaillierte Inhalt vonKann UNION ALL mit LIMIT 1 sequentielle Abfragen effizient simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!