我的SQL查询:SQL调用表
SELECT
upd.*,
usr.username AS `username`,
usr.profile_picture AS `profile_picture`
,(
SELECT
COUNT(lik.id)
FROM
likes as lik
WHERE
upd.update_id = lik.item_id
AND
lik.uid = 118697835834
AND lik.type=0
) as liked_update,
(
SELECT
COUNT(fav.id)
FROM
favorites as fav
WHERE
upd.update_id = fav.item_id
AND
fav.uid = 118697835834
AND fav.type=0
) as favorited_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
)
OR EXISTS
(
SELECT
*
FROM
topics as topic
WHERE
upd.uid = topic.uid
AND sub.uid = 118697835834
)
)
ORDER BY upd.date DESC
LIMIT 0, 15
我得到一个错误,因为sub
不能在subquery2,因为被称为其仅在subquery1 ...我如何能确保我可以称它为在子查询2以及?我是否必须在FROM
之上的LEFT JOIN用户上面?
Unknown column 'sub.uid' in 'where clause'
是的,你需要加入表格。如果您发布了整个查询,我敢打赌还有更多可以完成的查询来优化您的查询并缩短查询时间并加快运行速度。 – Travesty3 2012-03-06 20:15:22
已更新的问题 – fxuser 2012-03-06 20:17:54
我没有得到的东西......如果第二个“存在”检查主题和订阅者,与前面的“存在”不是多余的,它只检查订户,而不会该块已经是真的? – 2012-03-06 20:57:13