php - MySQL 选择具有多个表的 RANDOM

标签 php mysql sql

我正在创建用户建议应用。该应用程序获取查询 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/

相关文章:

php - 在 Symfony 2 中使用多个防火墙导致 ERR_TOO_MANY_REDIRECTS

mysql - SQL- 仅选择 NULL 列

mysql - 如何选择具有最高列值的行并在重复的情况下返回最上面的行?

c# - SQL Server CE 在某些计算机上速度极慢

php 验证字符串是否为字母,包括西里尔字母、希腊字母或任何 unicode 字母

php - 检查有效 token 以更新密码

php - Wordpress WP_Query 具有多个元值的元键

Mysql 按州、邮政编码和 maternitybg(3 个条件)过滤 Wordpress wp_usermeta 表

python - 使用变量查询时 UPDATE TABLE 返回空值

php - 想要按类型转换排序但按值(value)排序