繁体   English   中英

如何获取MySQL表中列值相同的所有行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM