簡體   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