我有一个users表和一个payments表,对于每个有付款的用户,payments表中可能有多个相关付款.我想 Select 所有有付款的用户,但只 Select 他们最新的付款.我正在try 这种SQL,但我以前从未try 过嵌套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

Mysql相关问答推荐

错误:数据包顺序错误.GET:0预期:10 node JS MySQL

如何在MySQL中检索两列的值不同的行

MySQL嵌套的内连接使查询变得很慢-解决方案?

可以优化这个带有重复WHERE子句的查询吗?

表列中的SQL SUM MENY值记录单个查询

为生日创建 MySQL 索引

有人可以帮我优化这个查询吗?

MySQL表中给定字段的每个不同值的连续记录形成对

MYSQL如何将虚拟列添加到现有表中

使用 ON DUPLICATE KEY 将列增加一定数量 MySQL NodeJS

为什么 ORDER BY 'id' 'desc' 不返回语法错误?

如何存储百分比值?

我应该使用什么列数据类型来存储大量文本或 html

如何从两个不同的日期获得年份差异?

如何改进 INSERT INTO ... SELECT 锁定行为

加快 mysql 转储和导入

MySQL - 错误 1045 - 访问被拒绝

将 UTF8 表上的 latin1 字符转换为 UTF8

在 MySQL Workbench 中导出超过 1000 条记录的查询结果

在 MySQL 中仅 Select 仅包含字母数字字符的行