相同列的 MySql Distinct

标签 mysql sql

大家好,我有一个类似 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 Distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603377/

相关文章:

php - bind_result 上允许的字节内存大小耗尽

mysql - 使用嵌套 SELECT 保留 SQL WHERE IN() 子句的顺序

mysql - Sql 在 WordPress 中表现异常

php - 将 SQL 转换为 Eloquent 以连接多个表并计数

php - mySQLi 永远插入脚本

php - 根据选择增加或减少优先行

mysql - 如何做一个sql限制

python - 输入卫生 SQLAlchemy 删除数据库

mysql - 错误 1452 : Cannot add or update a child row: a foreign key constraint fails

php - 将 PHP 生成的 JSON 保存到文本文件