MudGuard: UNION in IN() als Teil einer WHERE-Klausel?

Beitrag lesen

Hi,

Ich möchte in MySQL eine UNION-Abfrage, die ein LIMIT enthält, in einer Bedingung der WHERE-Klausel benutzen. Der UNION an sich funktioniert und bringt mir – wegen des impliziten DISTINCTs – 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