简体   繁体   English

连接到MySQL另一个表中的第n个最高值

[英]Join to nth highest value in another table in MySQL

I know how to join with the MAX or MIN value of a column from another table, for example: 我知道如何与另一个表中一列的MAX或MIN值联接,例如:

SELECT id, user_id, date_created, invite_date FROM user
INNER JOIN (
SELECT user_referral.user_id, MIN(user_referral.date_created) as invite_date
FROM user_referral
GROUP BY user_referral.user_id) AS invtable
ON user.id = invtable.user_id

But how do I do this for the nth highest or lower value of user_referral.date_created instead of just MAX or MIN ? 但是,如何对user_referral.date_created第n个最高或较低的值(而不只是MAXMIN)执行此操作

Just use limit/offset : 只需使用limit/offset

SELECT u.id, u.user_id, u.date_created, u.invite_date
FROM user u INNER JOIN
     (SELECT ref.*
      FROM user_referral ref
      GROUP BY ref.user_id
      ORDER BY ref.date_created
      LIMIT 1 OFFSET 8
     ) invtable
     ON u.id = invtable.user_id;

Just as a note, this returns the ninth row, because offset counting starts at 0 and not 1 . 请注意,这将返回第9行,因为偏移量计数从0开始,而不是1

EDIT: 编辑:

Now I see. 现在我明白了。 You can do it this way: 您可以这样操作:

SELECT u.id, u.user_id, u.date_created, u.invite_date
FROM user u INNER JOIN
     (SELECT ref.*,
             (@rn := if(@uid = ref.user_id, @rn + 1,
                        if(@uid := ref.user_id, 1, 1)
                       )
             ) as rn
      FROM user_referral ref cross join
           (select @rn := 0, @uid := -1) vars
      ORDER BY ref.user_id, ref.date_created
     ) invtable
     ON u.id = invtable.user_id
WHERE rn = 8;

You could try using a LIMIT N statement and then doing Max or Min like so (I used 8 for this example): 您可以尝试使用LIMIT N语句,然后像这样进行Max或Min(在此示例中,我使用了8):

SELECT id, user_id, date_created, invite_date FROM user
INNER JOIN (
SELECT user_id, MAX(user_referral.date_created) as invite_date
FROM (SELECT ref.user_id as user_id, MIN(ref.date_created) as invite_date
      FROM user_referral ref
      GROUP BY ref.user_id
      ORDER BY ref.date_created
      LIMIT 8)) AS invtable
ON user.id = invtable.user_id

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

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