Ich habe die folgende SQL
query:SQL Query - CASE unerwartetes Token
SELECT w.id, w.name, m.subject, m.id
FROM users AS w, i_c AS c,
(SELECT _id, u_id, subject FROM i_m WHERE (_id, tmstmp) IN
(SELECT _id, max(tmstmp) FROM i_m GROUP BY _id)) m
WHERE (c.uid_1 = '2' OR c.uid_2 = '2') AND
CASE WHEN c.uid_1 = '2' THEN w.id = c.uid_2
WHEN c.uid_2 = '2' THEN w.id = c.uid_1 END
AND (c.id = m.id) ORDER BY m.tmstmp DESC
Es funktioniert gut auf meinem ersten Server, sondern auf einem zweiten Server, gibt mir
Unexpected Token. (near "c" at position 280)
bei einem ähnlichen Sah Probleme aber noch nicht gefundene Lösung. Scheint das Problem ist CASE
.
Konnte mir jemand helfen? Jede Hilfe würde sehr geschätzt werden. Danke im Voraus.
den Fall Ersetzen mit OR-ed Bedingungen wäre noch besser. (Einfacher zu optimieren.) – jarlh
Es "funktioniert", weil MySQL boolesche Ausdrücke tatsächlich 0 oder 1 zurückgibt. Das ist etwas, das ich in keinem anderen DBMS gesehen habe. (Ich wäre nicht überrascht, dass der zweite Server nicht MySQL ist, weil die Fehlermeldung nicht so aussieht.) –