Mam następujący SQL
zapytania:SQL Query - SPRAWA Nieoczekiwany Reklamowe
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
To działa dobrze na moim pierwszym serwerze, ale na drugim serwerze, daje mi
Unexpected Token. (near "c" at position 280)
spojrzał na jakiś podobny problemy, ale wciąż nie znaleziono rozwiązania. Wydaje się, że problem jest następujący: CASE
.
Czy ktoś może mi pomóc? Każda pomoc byłaby bardzo cenna. Z góry dziękuję.
Wymień sprawę z warunków OR-ed byłoby nawet lepiej. (Łatwiej zoptymalizować.) – jarlh
"Działa", ponieważ MySQL sprawia, że wyrażenia boolowskie faktycznie zwracają 0 lub 1. To jest coś, czego nie widziałem w żadnym innym DBMS. (Nie byłbym zaskoczony, że drugi serwer nie jest w rzeczywistości MySQL, ponieważ komunikat o błędzie nie wygląda na taki). –