Ich habe eine Tabelle und möchte 15 Werte mit einer Bestellung und 15 mit einer anderen Bestellung erhalten. Ziel ist es, genau 30 verschiedene Werte zu erhalten.
Dies ist mein Code:Mit UNION auswählen, aber jede Unterabfrage einschränken und eindeutige Werte erhalten
(SELECT * FROM table1 WHERE criteria ORDER BY views DESC LIMIT 15)
UNION All
(SELECT * FROM table1 WHERE criteria ORDER BY date_upload DESC LIMIT 15)
Ich weiß, wie die Aufgabe mit zwei Abfragen zu vervollständigen (mit NOT IN), aber gibt es eine Möglichkeit, es in einer Abfrage zu machen?
"UNION ALL" gibt nicht unbedingt 30 * distinct * -Werte (jede der beiden Abfragen könnte denselben Datensatz enthalten); Verwenden Sie stattdessen "UNION DISTINCT" (oder "DISTINCT" weglassen, da dies die Standardeinstellung ist). Um auf * genau * 30 Ergebnisse zu beschränken, müssen Sie zunächst entscheiden, aus welcher der beiden Abfragen ein zusätzlicher Datensatz erstellt werden soll, wenn die jeweils obersten 15 sich schneiden. – eggyal
Sie sagen _distinct values_, aber Sie geben alle Spalten in table1 zurück. Gibt es nur eine Spalte? – Bridge
Was passiert, wenn beide Subselects denselben Datensatz zurückgeben? Werden Sie 29 Datensätze haben? Oder haben Sie 30 Datensätze (aus welcher Tabelle werden Sie einen zusätzlichen Datensatz zurückgeben?) –