我正在尝试从 SQL 中获取随机值,但我希望结果必须从一列中至少包含一个特定值,我该怎么做?
例如;
桌子;
id | category | name
----------------------------
1 | 1 | A
2 | 2 | B
3 | 3 | C
4 | 1 | D
5 | 3 | E
6 | 3 | F
7 | 2 | G
8 | 3 | H
当我用类别 id 查询随机四个数据时,结果并不是所有不同的类别,有时结果是这样的;
SELECT * FROM table WHERE category IN (1,2,3) ORDER BY RAND LIMIT 4
id | category | name
----------------------------
1 | 1 | A
4 | 1 | D
3 | 3 | C
8 | 3 | H
此示例中缺少类别 2,但我希望每个类别都必须在这样的结果中;
id | category | name
----------------------------
3 | 3 | C <-- One from category 3
4 | 1 | D <-- One from category 1
7 | 2 | G <-- One from category 2
5 | 3 | E <-- All categories ok, it can be random from any of them
对不起我的英语,我希望我能解释我想要什么。结果必须至少有来自 where 子句“类别 IN (X,Y,Z)”的一行。
谢谢你。
小提琴
对于低于 8 的 MySQL 版本
rn
,使用用户定义的变量在子查询中计算。