【发布时间】:2020-06-18 15:00:14
【问题描述】:
我想从中选择三个表
表 1 有一堆关于用户的静态信息,例如他们的身份证号、姓名、注册日期
表 2 包含用户的 ID 号、课程号和他们注册课程的日期
表 3 有课程编号和课程名称
我正在尝试使用一个查询来选择表 1 中提到的列,包括他们最近注册的课程(注册名称和注册日期)以及他们注册的第一门课程(注册名称和注册日期)
这是我想出来的
SELECT u.idst, u.userid, u.firstname, u.lastname, u.email, u.register_date,
MIN(l.date_inscr) as mindate, MAX(l.date_inscr) as maxdate, lc.coursename
FROM table1 u,table3 lc
LEFT JOIN table2 l
ON l.idCourse = lc.idCourse
WHERE u.idst = 12787
AND u.idst = l.idUser
这给了我我需要的一切,而且日期是正确的,但我不知道如何显示两个课程的名称。最新的和第一个。
帮助会很大。
谢谢!!!
【问题讨论】:
-
您使用的是 MySQL 8.0 吗?这可以通过window functions 完成。
-
为什么需要在一个查询中执行此操作?如果您执行两个单独的查询会更容易。
-
@BillKarwin 我正在运行一个脚本,该脚本将对超过 100,000 个用户进行 api 调用,所以我正在尝试减少它
-
@BillKarwin 我正在运行 5.5.60-MariaDB