因此,我有一个场景,其中有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)


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

注意:尽管我可以添加ORDER BY likeID DESC(这是我的自动递增列)会很好,但是我并不真正在乎“喜欢的”的检索顺序。

谢谢!

最佳答案

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

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

绝对可以!除非您一次查询数百个用户。对于1-8人来说,这是完美的解决方案!

关于mysql - 每人如何使用MYSQL LIMIT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7358615/

10-12 12:19
查看更多