[英]MySql Distinct for same columns
hi guys i have a data from sql like嗨,伙计们,我有来自 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
Here is my sql这是我的 sql
SELECT DISTINCT Users.UserID,Users.UserInfo,BestPracticeParticipant.ImageName ,BestPracticeParticipant.Point
FROM BestPracticeParticipant
JOIN Users on Users.UserID=BestPracticeParticipant.UserID
WHERE BestPracticeParticipant.BestPracticeID=1
But i need to data like this但我需要这样的数据
UserID UserInfo ImageName Point
159 Ozan Işık 1575972330250.jpeg 32
558 Mert Malaveş 1578248740672.jpeg 36
68 Egemen Yılmaz 1573696212462.jpeg 82
i need same UserID rows doesnt duplicate but i cant group by because of the other veriables from my sql.我需要相同的 UserID 行不重复,但由于来自我的 sql 的其他验证,我无法分组。
Thank you.谢谢你。
If you want a random matching row, you can use row_number()
:如果你想要一个随机匹配的行,你可以使用
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;
Note: You can control which row you get by modifying the ROW_NUMBER()
.注意:您可以通过修改
ROW_NUMBER()
来控制获得哪一行。
EDIT: The above works on MySQL 8+.编辑:以上适用于 MySQL 8+。 If you have an older version, then a unique id in the result set can be used to do what you want.
如果您有旧版本,则结果集中的唯一 ID 可用于执行您想要的操作。
For instance, if ImageName
is unique (for a given user):例如,如果
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
);
It seems your MySQL version doesn't support window functions.您的 MySQL 版本似乎不支持窗口函数。 So from your sample data, You may try below query -
因此,从您的示例数据中,您可以尝试以下查询 -
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.