【问题标题】:mysql query help - complicated join/order by scenariomysql 查询帮助 - 复杂的连接/按场景排序
【发布时间】:2023-03-20 00:26:01
【问题描述】:

我需要编写一个查询,但我什至不知道从哪里开始。我有一组表不是我创建的,也无法更改。

member table
+----+-------+
| id | class |
+----+-------+
|  1 |     1 |
|  2 |     2 |
+----+-------+

member_data table
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 |       John |     Jones |
|  2 |       Juan |     Jones |
+----+------------+-----------+

member_entries table
+----+-----------+-------+------------+
| id | member_id | title |    date    |
+----+-----------+-------+------------+
|  1 |         1 | test1 | 1265042580 |
|  2 |         1 | test2 | 1265042581 |
|  3 |         2 | test3 | 1265042582 |
|  4 |         3 | test4 | 1265042583 |
+----+-----------+-------+------------+

我需要从 member_data 中选择 id、first_name、从 member_entries 中选择最近的标题,以及与 member_id 匹配的 member_entries 总数。我需要能够在第一个表中选择成员的班级是某个数字的位置。我还需要能够按这些列中的任何一个进行排序。如果我选择成员类为 1 的成员,这就是我需要的输出。

+----+------------+-------+------------+
| id | first_name | title |    date    |
+----+------------+-------+------------+
|  1 |       John | test2 | 1265042581 |
+----+------------+-------+------------+

【问题讨论】:

    标签: mysql join


    【解决方案1】:
     SELECT m.id, md.first_name, me.title, me.date
     FROM member m 
     INNER JOIN member_data md ON md.id = m.id 
     INNER JOIN member_entries me on me.id = m.id
     WHERE me.date =
       (SELECT MAX(date) FROM member_entries WHERE id = m.id)
     AND m.class = 1
    

    【讨论】:

      【解决方案2】:
      SELECT member.id, member_data.first_name, member_entries.title, member_entries.date
      FROM member
      INNER JOIN member_data ON member.id = member_data.member_id
      INNER JOIN member_entries ON member.id = member_entries.member_id
      WHERE member.class = 1
      ORDER BY member_entries.date DESC
      LIMIT 1
      

      并根据需要构造WHEREORDER BY 子句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 2012-11-29
        • 2021-03-04
        相关资源
        最近更新 更多