gpt4 book ai didi

相同列的 MySql Distinct

转载 作者:行者123 更新时间:2023-11-30 21:24:57 25 4
gpt4 key购买 nike

大家好,我有一个类似 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com