MySQL选择计数为3的随机行
我想从MySQL中随机选择一行,但该行必须在表中出现三次。信不信由你,但实际上我有一个很好的理由想这么做!假设我有一个包含以下数据的表MySQL选择计数为3的随机行,mysql,random,count,having,Mysql,Random,Count,Having,我想从MySQL中随机选择一行,但该行必须在表中出现三次。信不信由你,但实际上我有一个很好的理由想这么做!假设我有一个包含以下数据的表 word wordType house noun house noun house noun car noun car noun car noun floor noun floor noun 我希望我的select语句随机选取一个实例,其中wordType='Non',但单词必须在表中出现三次。因此,结果可能是
word wordType
house noun
house noun
house noun
car noun
car noun
car noun
floor noun
floor noun
我希望我的select语句随机选取一个实例,其中wordType='Non',但单词必须在表中出现三次。因此,结果可能是house一次,也可能是car一次,但它是随机的,因此可能多次出现相同的结果,但它永远不会选择floor,因为floor只在表中出现两次
下面是一些示例输出
myquery = house
myquery = house
myquery = car
我试过了,但没用
SELECT SUBSTRING_INDEX(GROUP_CONCAT(word ORDER BY RAND()),',', 1) AS word
FROM myTable
WHERE wordType ='noun'
HAVING COUNT(*)= 3;
您可以选择count*大于2的单词,然后随机选择 在外部查询中 模式MySQL v8.0 问题1 单词 汽车 房屋 汽车
我认为op的结果是基于这样的假设,即他们将执行myquery 3次
CREATE TABLE wordtable (
`word` VARCHAR(5),
`wordType` VARCHAR(4)
);
INSERT INTO wordtable
(`word`, `wordType`)
VALUES
('house', 'noun'),
('house', 'noun'),
('house', 'noun'),
('car', 'noun'),
('car', 'noun'),
('car', 'noun'),
('floor', 'noun'),
('floor', 'noun');
SELECT
`word`
FROM wordtable
WHERE `word` in (
SELECT
`word`
FROM wordtable
WHERE `wordType` = 'noun'
GROUP BY `word`
HAVING count(`word`) >= 3)
ORDER BY RAND()
LIMIT 3;