Ho la seguente SQL
query:SQL Query - CAUSA imprevisto 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
Funziona bene sul mio primo server, ma, su un secondo server, mi dà
Unexpected Token. (near "c" at position 280)
Guardato alcuni simili problemi ma non ancora trovato soluzione. Sembra che il problema sia CASE
.
Qualcuno potrebbe aiutarmi? Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo.
Sostituire il caso con condizioni OR-ed sarebbe anche meglio. (Più facile da ottimizzare.) – jarlh
"funziona" perché MySQL fa in modo che le espressioni booleane restituiscano 0 o 1. Questo è qualcosa che non ho visto in nessun altro DBMS. (Non sarei sorpreso che il secondo server non sia in realtà MySQL, perché il messaggio di errore non sembra.) –