PHP MySQL 选择随机行,其中行不同

标签 php mysql random

我想要实现的是随机选择多行,其中某一列与最后一列不同

SELECT * FROM mytable WHERE `column_for_duplicate_values` != '$thelastkey' ORDER BY RAND() LIMIT 10

多个值的列将保存例如:

1 , 1 , 1 , 1 , 2, 5 , 6, 6 , 6 , 6 , 6 , 11 , 11 ,  11 , 19

我想从每个中选择 1 个。所以我会得到

1 , 2 , 5 , 6 , 11 , 19

最佳答案

我的解决方案的主要问题可能是

  1. 不适用

    您的mytable中需要有一个主要的唯一ID

      SELECT * FROM mytable WHERE id IN (
               SELECT id FROM (
                        SELECT id, column_for_duplicate_values 
                        FROM mytable ORDER BY RAND()) AS rand 
                        GROUP BY column_for_duplicate_values
                        ORDER BY RAND()) LIMIT 10;
    

主要概念是首先获取所有值的随机列表及其 ID 和您希望具有唯一值的列。

根据这个结果,我们按我们只想拥有一次的值进行分组,并且只返回 id。然后主表将从该列表中随机选择 10 个 id。

我用我的一个数据库尝试过。应该适用于任何具有唯一 ID 和一些随机其他列的表。

如果您附加 ORDER BY id ASC 也会对 ID 进行排序。

关于PHP MySQL 选择随机行,其中行不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590671/

相关文章:

javascript - 从 Ajax 到 Php 传递和处理 2D 数组

php - 城市半径和 mySQL

python - 如何从列表中随机选择一个英文单词

java - Mysql 插入存储过程比 Java JDBC 慢

mysql - SQL 查询根据正在连接的主表的 PK 填充表

mysql - 有没有办法在 mysql 中生成随机数并附加到字符串上?

c# - 通过随机数生成确保均匀(ish)分布

php - PDO 删除不起作用并且不会抛出错误(添加 base64 时)

php - 使用 jquery 和 php 动态重命名侧边栏菜单

php - Ajax PHP Jquery - 回显数据