如何使用每人MYSQL LIMIT

时间:2011-09-09 07:51:29

标签: mysql query-optimization union limit

所以我有一个场景,有1-8个人,我需要查询他们“喜欢”每人3件事。我将查询设置为

SELECT liked FROM likeTable WHERE uid IN (uid1,uid2,uid3,uid4) LIMIT 12

但很明显,当我对uid1有12个“喜欢”时,这可能会停止,剩下的就是0.我读了一个可能的解决方案,例如使用UNION ALL ......

(SELECT liked FROM likeTable WHERE uid = uid1 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid2 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid3 LIMIT 3)
UNION ALL
(SELECT liked FROM likeTable WHERE uid = uid4 LIMIT 3)

我可以通过在php中使用forloop创建sql查询字符串来实现这一点,但这是查询数据的有效方法吗?

注意:我并不关心检索“喜欢”的顺序,尽管如果我可以添加一个ORDER BY likeID DESC,这是我的自动增量列

谢谢!

1 个答案:

答案 0 :(得分:0)

对于少数(不是数百,我会说)类别(用户),只需使用联合解决方案。

我是否可以通过在php中使用forloop创建sql查询字符串来实现此目的,但这是查询数据的有效方法吗?

Definitelly是的!除非你一次性查询数百个用户。 1-8人,这是完美的解决方案!