MySQL подзапрос возвращает ошибку - PullRequest
1 голос
/ 01 марта 2012
SELECT 
    upd.*,
    usr.username AS `username`,
    usr.profile_picture AS `profile_picture`
    ,(
        SELECT COUNT (like.id)
        FROM likes as like
        WHERE upd.update_id = like.item_id
           AND like.uid = 118697835834
    ) as liked_update

FROM updates AS upd
LEFT JOIN users AS usr 
    ON upd.uid = usr.uid
WHERE upd.deleted=0
    AND 
    ( upd.uid=118697835834
        OR EXISTS ( SELECT *
                    FROM   subscribers AS sub 
                    WHERE  upd.uid = sub.suid
                    AND  sub.uid = 118697835834
            )
    )
ORDER BY upd.date DESC
LIMIT 0, 15

подзапрос в SELECT возвращает следующую ошибку:

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 
    'like WHERE upd.update_id = like.item_id AND l' at line 10

Ответы [ 4 ]

6 голосов
/ 01 марта 2012

like - зарезервированное слово в SQL; Вы должны использовать другой псевдоним для своей таблицы likes. Измените свой подзапрос с:

SELECT
    COUNT (like.id)
FROM
    likes as like
WHERE
    upd.update_id = like.item_id
    AND like.uid = 118697835834

На что-то похожее на:

SELECT
    COUNT (l.id)
FROM
    likes as l
WHERE
    upd.update_id = l.item_id
    AND l.uid = 118697835834
1 голос
/ 01 марта 2012

Вы не можете использовать Like в качестве псевдонима, это зарезервированное слово

SELECT 
    upd.*,
    usr.username AS `username`,
    usr.profile_picture AS `profile_picture`
    ,(
        SELECT COUNT (l.id)
        FROM likes as l
        WHERE upd.update_id = l.item_id
           AND l.uid = 118697835834
    ) as liked_update

FROM updates AS upd
LEFT JOIN users AS usr 
    ON upd.uid = usr.uid
WHERE upd.deleted=0
    AND 
    ( upd.uid=118697835834
        OR EXISTS ( SELECT *
                    FROM   subscribers AS sub 
                    WHERE  upd.uid = sub.suid
                    AND  sub.uid = 118697835834
            )
    )
ORDER BY upd.date DESC
LIMIT 0, 15
1 голос
/ 01 марта 2012

like - зарезервированное слово SQL

измените псевдоним на понравившийся или likeinfo, и ваш запрос должен стать действительным.

0 голосов
/ 01 марта 2012

Старайтесь не использовать «like» в именах полей таблицы или любых других переменных, потому что это ключевое слово SQL - то же самое, что SELECT или AND.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...