mysql 查询帮助 - 复杂的连接/排序场景

标签 mysql join

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

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的总数。我需要能够选择成员的类(class)在第一个表中的某个数字。我还需要能够按这些列中的任何一个进行排序。如果我选择了成员类别为 1 的成员,这就是我需要的输出。

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

最佳答案

 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

关于mysql 查询帮助 - 复杂的连接/排序场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2178412/

相关文章:

mysql - 困难的 Rails ActiveModel 查询

MySQL:通过三个主键中的两个选择行

mysql - 使用mysql中的某些条件连接3个表?

join - 使用 ETL 中的表连接更改数据捕获

mysql - group by 无法正确连接两个表

mysql - SQL - 当多个左连接时重复标签返回

mysql - 扩展现有数据库接口(interface)

mysql - 基于 GROUP BY 中的单个列使用 DISTINCT

java - 如何使用MySQL准备语句缓存?

java - JPA 二级表问题