[英]mysql subquery returns error
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
like
SQL中的保留字like
; 您應該為“ 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
就像是保留的SQL字
將您的別名更改為“ like”或“ likeinfo”,您的請求應變為有效。
您不能使用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
盡量不要在表字段名稱或任何其他變量中使用“ like”,因為它是一個SQL關鍵字-與SELECT或AND相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.