Gibt es eine Möglichkeit, eine Unterabfrage in einer Union zu referenzieren?MYSQL, Unterabfrage in Union
Ich versuche, so etwas wie die folgenden zu tun, und möchte eine temporäre Tabelle vermeiden, aber die Unterabfrage wird von einer viel größeren Datenmenge gezogen werden, so dass es sinnvoll ist es nur einmal tun ..
SELECT * FROM (SELECT * FROM ads WHERE state='FL' AND city='Maitland' AND page='home' ORDER BY RAND()) AS sq WHERE spot = 'full-banner' LIMIT 1
UNION
SELECT * FROM sq WHERE spot = 'leaderboard' LIMIT 1
UNION
SELECT * FROM sq WHERE spot = 'rectangle1' LIMIT 1
UNION
SELECT * FROM sq WHERE spot = 'rectangle2' LIMIT 1
.... etc,,
Es ist eine Schande, dass DISTINCT nicht für eine einzelne Spalte einer Ergebnismenge angegeben werden kann.
Weil tbl nur eine Referenz für die erste Unterabfrage ist. Vielleicht ist der Name ein bisschen verwirrend. Die Ads-Tabelle ist groß, aber nach der Unterabfrage sind es nur etwa 90 Zeilen. Ich werde den Aliasnamen aktualisieren, um Verwechslungen zu vermeiden. – christian
Verstanden. Meine Antwort wurde aktualisiert. –
Meine ersten Tests zeigen, dass das Folgende tut, was ich will! .... SELECT * FROM (SELECT * VON Anzeigen WHERE state = 'FL' UND city = 'Maitland' ORDER BY RAND()) sq GROUP BY sq .spot ... Also gibt GROUP BY nur ein Ergebnis pro Klausel zurück? Ich dachte, es wäre ORDER BY ähnlich. Vielen Dank – christian