[英]How to obtain all rows in MySQL table where a column's value is the same?
我是 SQL 新手。 假设我们有下表:
id type
1 A
2 A
3 B
4 B
5 C
6 C
7 D
8 D
...
假设我不知道“类型”列下的可能值,并假设它可以是 N 个可能值之一。 在 MySQL 中,如何形成查询以获取单个类型的所有行(随机select 一种类型或采用第一个按字母顺序排序的类型)?
所需的 output:
id type
1 A
2 A
或者
id type
5 C
6 C
或者
id type
7 D
8 D
您可以选择随机类型并使用以下方法获取所有行:
select t.*
from t
where t.type = (select t2.type from t t2 order by rand() limit 1);
对于 MySQL 8+ 解决方案,您可以在此处使用RANK()
:
WITH cte AS (
SELECT *, RANK() OVER (ORDER BY type) rnk
FROM yourTable
)
SELECT id, type
FROM cte
WHERE rnk = 1;
此方法将返回按字母顺序排列的最低type
值的所有记录。
如果您想按字母顺序对第type
进行排序,请使用min
(或使用max
作为最后一种类型),如下所示:
select t.*
from your_table t
where t.type = (select min(tt.type) from your_table tt);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.