V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LightingX
V2EX  ›  问与答

SQL 先排序后去重问题

  •  
  •   LightingX · 2021-01-29 11:50:35 +08:00 · 902 次点击
    这是一个创建于 1378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    SQL 的默认执行顺序是先 distinct 再 order by,如何实现先排序后去重呢? 假设 A 表有两个字段 id 和 name,现有一个 sql

    select a.* 
    from a
    left join b on a.xx = b.xx
    order by b.xx
    

    得到的结果是

    id name
    2 b
    1 a
    3 c
    2 b
    3 c
    4 d
    1 a

    我想对它进行去重

    select distinct a.* 
    from a
    left join b on a.xx = b.xx
    order by b.xx
    

    我希望得到的结果是:

    id Name
    2 b
    1 a
    3 c
    4 d

    即每重复的一行取第一次出现的那一列。 但实际上 mysql 的执行顺序并不是这样的,我应该怎么组织 order by 语句呢?

    1 条回复    2021-01-29 13:42:53 +08:00
    uselessVisitor
        1
    uselessVisitor  
       2021-01-29 13:42:53 +08:00
    子查询
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1099 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:31 · PVG 06:31 · LAX 14:31 · JFK 17:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.