代码之家  ›  专栏  ›  技术社区  ›  eugeneK

如何在sql中选择唯一的行?

  •  2
  • eugeneK  · 技术社区  · 14 年前

    我在Messages表中有两列,senderUserID和recieverUserID。

    这是示例数据

    66622   61350
    90166   79222
    90176   79222
    86727   80452
    10888   47305
    66560   79219
    66622   80452
    89548   14452
    66622   69177
    52081   79223
    

    如您所见,66622在senderUserID中出现了两次。如何限制它只出现一次。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Thilo    14 年前

    如果仍要在SQL中执行此操作:

     select senderUserId, max(receiverUserId) from messages group by senderUserId
    
        2
  •  5
  •   Martin Smith    14 年前
    ;WITH cte AS
    (
    SELECT senderUserID, 
           recieverUserID,
           ROW_NUMBER() OVER (PARTITION BY senderUserID ORDER BY recieverUserID) AS RN
    FROM YourTable
    )
    SELECT senderUserID,recieverUserID FROM cte 
    WHERE RN=1