繁体   English   中英

相同列的 MySql 不同

[英]MySql Distinct for same columns

嗨,伙计们,我有来自 sql 的数据,例如

UserID   UserInfo       ImageName           Point   
159      Ozan Işık      1575972330250.jpeg  32
558      Mert Malaveş   1578248740672.jpeg  36
68       Egemen Yılmaz  1573696212462.jpeg  82
558      Mert Malaveş   1578248740678.jpeg  36

这是我的 sql

SELECT DISTINCT Users.UserID,Users.UserInfo,BestPracticeParticipant.ImageName    ,BestPracticeParticipant.Point 
FROM BestPracticeParticipant
    JOIN Users on Users.UserID=BestPracticeParticipant.UserID
    WHERE BestPracticeParticipant.BestPracticeID=1

但我需要这样的数据

UserID   UserInfo       ImageName           Point   
159      Ozan Işık      1575972330250.jpeg  32
558      Mert Malaveş   1578248740672.jpeg  36
68       Egemen Yılmaz  1573696212462.jpeg  82

我需要相同的 UserID 行不重复,但由于来自我的 sql 的其他验证,我无法分组。

谢谢你。

如果你想要一个随机匹配的行,你可以使用row_number()

SELECT u.*
FROM (SELECT u.UserID, u.UserInfo, bpp.ImageName, bpp.Point,
             ROW_NUMBER() OVER (PARTITION BY u.UserID ORDER BY rand()) as seqnum
      FROM BestPracticeParticipant bpp JOIN
           Users u
           ON u.UserID = bpp.UserID
      WHERE bpp.BestPracticeID = 1
     ) u
WHERE seqnum = 1;

注意:您可以通过修改ROW_NUMBER()来控制获得哪一行。

编辑:以上适用于 MySQL 8+。 如果您有旧版本,则结果集中的唯一 ID 可用于执行您想要的操作。

例如,如果ImageName是唯一的(对于给定用户):

SELECT u.UserID, u.UserInfo, bpp.ImageName, bpp.Point
FROM useres u JOIN
     BestPracticeParticipant bpp
     ON u.UserID = bpp.UserID
WHERE bpp.BestPracticeID = 1 AND
      bpp.ImageName = (SELECT MAX(bpp2.ImageName)
                       FROM BestPracticeParticipant bpp2
                       WHERE bpp2.UserID = bpp.UserID AND
                             bpp2.BestPracticeID = 1
                     );

您的 MySQL 版本似乎不支持窗口函数。 因此,从您的示例数据中,您可以尝试以下查询 -

SELECT DISTINCT U.UserID,U.UserInfo,BPP.ImageName,BPP.Point 
FROM (SELECT UserID, MIN(ImageName), Point
      FROM BestPracticeParticipant
      GROUP BY UserID, Point) BPP
JOIN Users U on U.UserID=BPP.UserID
WHERE BPP.BestPracticeID=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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