首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL如何按升序选择行2重复列值

问MySQL如何按升序选择行2重复列值
EN

Stack Overflow用户
提问于 2019-07-03 09:44:28
回答 1查看 43关注 0票数 1

我有一张这样的表格:

代码语言:javascript
复制
id1  |  id2  |  id3
-------------------
 1      'B'       1
 1      'B'       2
 1      'C'       1
 1      'C'       2
 2      'A'       1
 2      'A'       2

从这个表中,我想检索包含id1和id2的最低组合的行。因此,第一个查询将返回前两行:最低id1为1,其中最低id2为'B‘。然后,如果我删除它们,那么第二个查询将返回第三行和第四行。

我有以下疑问:

代码语言:javascript
复制
select * 
from table_1 
where id2 = (
    select min(id2) 
    from table_1 
    where id1 = (
        select min(id1) 
        from table_1
    )
)

这是最好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 09:54:14

我会在这里使用RANK:

代码语言:javascript
复制
WITH cte AS (
    SELECT *, RANK() OVER (ORDER BY id1, id2) rnk
    FROM yourTable
)

SELECT id1, id2, id3
FROM cte
WHERE rnk = 1;

这里假设您使用的是MySQL 8+。如果没有,还有其他方法来处理您的查询,但如果您长期需要这样的查询,那么可以考虑升级。

如果您使用的是MySQL 5.7或更早版本,请使用以下版本:

代码语言:javascript
复制
SELECT id1, id2, id3
FROM yourTable
WHERE
    id1 = (SELECT MIN(id1) FROM yourTable) AND
    id2 = (SELECT MIN(id2) FROM yourTable
           WHERE id1 = (SELECT MIN(id1) FROM yourTable));

​

Demo

​

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56861848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档