所以我有一个场景,有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,这是我的自动增量列
谢谢!
答案 0 :(得分:0)
对于少数(不是数百,我会说)类别(用户),只需使用联合解决方案。
我是否可以通过在php中使用forloop创建sql查询字符串来实现此目的,但这是查询数据的有效方法吗?
Definitelly是的!除非你一次性查询数百个用户。 1-8人,这是完美的解决方案!