MySQL内部联接只从第二个表中选择一行

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我有一个users表和apayments表中的每个用户(其中有支付者)可能具有多个关联支付。payments桌子。我想选择所有的用户谁有付款,但只选择他们的最新付款。我正在尝试这个SQL,但是我以前从未尝试过嵌套SQL语句,所以我想知道我做错了什么。感谢你的帮助

        SELECT u.* 
            FROM users AS u
            INNER JOIN (
                SELECT p.*
                FROM payments AS p
                ORDER BY date DESC
                LIMIT 1 )
            ON p.user_id = u.id
            WHERE u.package = 1
提问于
用户回答回答于

需要有一个子查询来获取他们的最新日期user ID...

SELECT  a.*, c.*
FROM users a 
    INNER JOIN payments c
        ON a.id = c.user_ID
    INNER JOIN
    (
        SELECT user_ID, MAX(date) maxDate
        FROM payments
        GROUP BY user_ID
    ) b ON c.user_ID = b.user_ID AND
            c.date = b.maxDate
WHERE a.package = 1
用户回答回答于
SELECT u.*, p.*, max(p.date)
FROM payments p
JOIN users u ON u.id=p.user_id AND u.package = 1
GROUP BY u.id
ORDER BY p.date DESC

扫码关注云+社区