我有一个表,在名为“数据”的列中包含许多整数
data | param
123 1
432 1
123 1
423 2
234 1
423 2
我有一个问题
SELECT data FROM data_table WHERE param=*something* GROUP BY data
ORDER BY rand() LIMIT 1
从表中返回一个随机的不同整数。但我还需要获得我从中选择的整数总数。我试过:
SELECT DISTINCT(data) AS data, COUNT(DISTINCT(data)) as count FROM
data_table WHERE param=*something* ORDER BY rand() LIMIT 1
这会返回从中选择数据的正确数字,但返回的数据 不是随机的 - 它始终是同一行。因此,我需要获取在应用 WHERE 之后选择了 rand() 的行数。所以对上表进行查询应该返回:
query WHERE param='1':
data count
123 3
query WHERE param='1':
data count
432 3
query WHERE param='1':
data count
234 3
query WHERE param='2':
data count
423 1
最佳答案
这行得通。我通常不建议在选择器中放置查询,因为它会计算返回的每一行。但是在这种情况下,您只返回一行,所以没关系。
select
count(distinct data) as cnt,
(SELECT data FROM data_table GROUP BY data
WHERE param='xxx'
ORDER BY rand() LIMIT 1) as random
from data_table
WHERE param='xxx'
查看此 SQL Fiddle看看它在没有 where 语句的情况下工作。
关于mysql - 计算不同的元素并只返回一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17816555/