Hi,
Ich möchte in MySQL eine
UNION
-Abfrage, die einLIMIT
enthält, in einer Bedingung derWHERE
-Klausel benutzen. DerUNION
an sich funktioniert und bringt mir – wegen des implizitenDISTINCT
s – wie erwartet zwischen 6 und 12 Ergebniszeilen.(SELECT id FROM entries WHERE spam = 0 ORDER BY time DESC LIMIT 6) UNION (SELECT id FROM entries WHERE spam = 0 ORDER BY edited DESC LIMIT 6)
Setze ich diese Abfrage nun in die
WHERE
-Klausel einer anderen Abfrage … … meldet mir MySQL (in phpMyAdmin, worin ich das Konstrukt teste) einen Fehler (Zeilenumbrüche von mir).
IIRC mag MySQL union nicht in direkter Subquery. Was aber funktionieren soll, ist, die unionische Subquery nochmal in ein "Select x from (select x from ... union select x from ...) zu verpacken, und das dann in das where z in (...) einzuwickeln.
Ohne Garantie, ist schon länger her, daß ich mit MySQL gearbeitet hab.
cu,
Andreas a/k/a MudGuard