【问题标题】:MYSQL: retrieve all the users details with the details of the first sale for each user by date, 2 tablesMYSQL:按日期检索所有用户的详细信息以及每个用户的第一次销售的详细信息,2 个表
【发布时间】:2022-10-02 13:27:32
【问题描述】:

我正在尝试按日期检索所有用户的详细信息以及每个用户的第一次销售的详细信息。

Mysql 表: enter image description here

我的代码:

SELECT u.id,u.name,u.email,s.amount,s.date 
FROM users u 
INNER JOIN sales s ON u.id=s.user_id 
ORDER BY u.id,s.date

它的回报是什么:

[{\"id\":\"1\",\"name\":\"aaa\",\"email\":\"aaa@gmail.com\",\"amount\":\" 5600\",\"date\":\"2019-11-11\"},{\"id\":\"1\",\"name\":\"aaa\",\"email\ ":\"aaa@gmail.com\",\"金额\":\"3000\",\"日期\":\"2020-01-08\"},{\"id\":\" 2\",\"姓名\":\"bbb\",\"邮箱\":\"bbb@gmail.com\",\"金额\":\"6000\",\"日期\": \"2019-12-15\"},{\"id\":\"2\",\"name\":\"bbb\",\"email\":\"bbb@gmail.com\ ",\"金额\":\"1000\",\"日期\":\"2020-06-05\"},{\"id\":\"3\",\"姓名\": \"ccc\",\"email\":\"ccc@gmail.com\",\"金额\":\"7500\",\"日期\":\"2019-09-02\"} ,{\"id\":\"4\",\"name\":\"ddd\",\"email\":\"ddd@gmail.com\",\"amount\":\" 5000\",\"date\":\"2019-03-12\"},{\"id\":\"4\",\"name\":\"ddd\",\"email\ ":\"ddd@gmail.com\",\"金额\":\"4000\",\"日期\":\"2020-04-21\"}]

我想获取每个 id 的最早日期行,如下所示:

[{\"id\":\"1\",\"name\":\"aaa\",\"email\":\"aaa@gmail.com\",\"amount\":\" 5600\",\"date\":\"2019-11-11\"},{\"id\":\"2\",\"name\":\"bbb\",\"email\ ":\"bbb@gmail.com\",\"金额\":\"6000\",\"日期\":\"2019-12-15\"},{\"id\":\" 3\",\"姓名\":\"ccc\",\"邮箱\":\"ccc@gmail.com\",\"金额\":\"7500\",\"日期\": \"2019-09-02\"},{\"id\":\"4\",\"name\":\"ddd\",\"email\":\"ddd@gmail.com\ ",\"金额\":\"5000\",\"日期\":\"2019-03-12\"}]>

帮助别人?

  • “第一个”是指日期最早的那个?
  • 是的,例如:id \"1\" 需要显示日期为 \"2019-11-11\" 的行。
  • 那么请edit您的问题,以澄清要求,并最好提供预期结果的实际样本。

标签: mysql sql


【解决方案1】:

您可以将查找每个用户的第一个销售 ID 的查询用作内联视图(from 子句中的查询)并将该内联视图连接到有问题的两个表。像这样:

select    u.*,
          s.amount,
          s.date
from      users                         u
     join (
            select    user_id,
                      min(id) as min_id
            from      sales
            group by  user_id
          )                             v
     join sales                         s
       on u.user_id = v.user_id
      and s.id = v.min_id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2011-05-30
    • 2023-03-08
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多