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

Beitrag lesen

Hallo

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 …

SELECT
 id,
 user_id,
 name,
 time,
 subject,
 category
FROM entries
 LEFT JOIN userdata
  ON userdata.user_id = entries.user_id
 WHERE entries.id IN((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))
 ORDER BY time DESC
 LIMIT 6

… meldet mir MySQL (in phpMyAdmin, worin ich das Konstrukt teste) einen Fehler (Zeilenumbrüche von mir).

#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near
'UNION (SELECT id FROM entries WHERE spam = 0 ORDER BY edited DESC LIMIT 6))' at line 11

und

Ein Ausdruck wurde erwartet. (bei FROM)

Gibt's da zu viele LIMIT- und/oder ORDER BY-Anweisungen oder wo liegt mein Fehler?

Tschö, Auge

--
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett

akzeptierte Antworten