MySQL INNER JOIN select only one row from second table(MySQL INNER JOIN 从第二个表中只选择一行)
问题描述
我有一个 users 表和一个 payments 表,对于每个有付款的用户,在 payments中可能有多个相关的付款代码>表.我想选择所有有付款的用户,但只选择他们最近的付款.我正在尝试这个 SQL,但我以前从未尝试过嵌套 SQL 语句,所以我想知道我做错了什么.感谢帮助
I have a users table and a payments table, for each user, those of which have payments, may have multiple associated payments in the payments table. I would like to select all users who have payments, but only select their latest payment. I'm trying this SQL but i've never tried nested SQL statements before so I want to know what i'm doing wrong. Appreciate the help
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
推荐答案
您需要有一个子查询来获取每个用户 ID 的最新日期.
You need to have a subquery to get their latest date per 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
                        这篇关于MySQL INNER JOIN 从第二个表中只选择一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:MySQL INNER JOIN 从第二个表中只选择一行
				
        
 
            
        - SQL 临时表问题 2022-01-01
 - 更改自动增量起始编号? 2021-01-01
 - 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
 - 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
 - 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
 - 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
 - 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
 - 在SQL中,如何为每个组选择前2行 2021-01-01
 - 导入具有可变标题的 Excel 文件 2021-01-01
 - 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
 
						
						
						
						
						
				
				
				
				