我正在创建用户建议应用。该应用程序获取查询 mysql 服务器并从 user_table,user_images 中随机抽取 10 个用户
user_table ===> id, name, username
user_image ===> id, userid, image_path, image
我从 explainextended.com 得到了这个脚本效果很好,我的问题是将 user_image 表添加到查询中
SELECT id, name, username
FROM (
SELECT @cnt := COUNT(*) + 1,
@lim := 10
FROM user_table
) vars
STRAIGHT_JOIN
(
SELECT r.*,
@lim := @lim - 1
FROM user_table r
WHERE (@cnt := @cnt - 1)
AND RAND() < @lim / @cnt
) i
如果有人能提供帮助,我将很高兴,谢谢。
最佳答案
为什么不在限制之前使用随机订单?
SELECT r.id, r.name, r.username
FROM user_table
ORDER BY RAND()
LIMIT 10
加入您的 user_pictures 变得非常容易。
编辑:
回答原来的问题,因为上面的解决方案太慢了。您可以直接在 STRAIGHT_JOIN 中加入结果。
SELECT r.*, img.*,
@lim := @lim - 1
FROM user_table r
LEFT JOIN user_images img ON (r.id = img.userid)
WHERE (@cnt := @cnt - 1)
AND RAND() < @lim / @cnt
关于php - MySQL 选择具有多个表的 RANDOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33766692/