选择随机但每个名称至少应选择一次

时间:2015-11-11 14:48:25

标签: mysql

我的MySQL查询有问题:我有超过100000条记录, 我想要的是随机选择10个条目,我可以看到所有设备至少一次, 设备名称是用户与其他设备的不同之处。 该表有许多设备名称,名称在另一个表中,我使用设备ID连接到该表 每个用户只有不到10个设备,所以基本上我可以在LIMIT 10中看到所有这些设备,但随机功能有时候不会选择其中一些设备 我用:

SELECT DISTINCT name,signal
FROM my_table
Where name='any_name'
ORDER BY RAND()LIMIt 10

这会选择10个条目,但有时不会选择某些设备 示例:

+------------+------------+
| Device     | Signal     | 
+------------+------------+
| Router1    | -60        |  
| Router2    | -56        |
| Router3    | -102       |
| Router4    | -125       |
| .......    | ....       |
+------------+------------+

3 个答案:

答案 0 :(得分:0)

尝试使用此代码:

@media (min-width: 768px) {
  .lg-group {
    margin-top: 25px;
  }
}

但请确保您已将column_name和table_name设置为预期的。

另外,请尝试在旁边使用此链接: PHP's XMLWriter extension

祝你好运。

答案 1 :(得分:0)

你可以尝试这个(未经测试)。逻辑是选择那些设备记录,其信号是该设备的最大信号。

SELECT aa.name, aa.signal
FROM (
    SELECT name, MAX(signal) AS max_signal
    FROM my_table
    GROUP BY name
) AS _aa
INNER JOIN my_table AS aa
ON aa.name = _aa.name
WHERE aa.signal = _aa.max_signal
ORDER BY RAND()
LIMIT 10;

答案 2 :(得分:0)

使用SELECT上的子查询做出令人讨厌的方式: -

SELECT b.Device, (SELECT Signal FROM my_table a WHERE a.Device = b.Device ORDER BY RAND() LIMIT 1)
FROM 
(
    SELECT DISTINCT Device
    FROM my_table
    ORDER BY RAND()
    LIMIT 10
) b