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 DISTINCT
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 …
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
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett