SELECT 从两个表中收集结果的查询

SELECT query to collect results from two tables

我有一个简单的查询,它从 'loan' table 中选择一本书的最晚到期日期。

我正在使用以下查询;

SELECT duedate, no
FROM loan 
WHERE duedate =
  (SELECT duedate FROM loan ORDER BY duedate DESC LIMIT 1);

查询结果显示最晚日期和取书人'no'。
我现在正在寻找一种方法来修改查询以同时显示此人的姓名。然而,名称在不同的 table 中,称为 'student',但来自 'loan' table 的 'no' 来自上面查询结果中的 'no' 需要匹配名称来自 'student' table 的人。

结果中的 'no' 将与 'student' table 中的名称匹配,因为 'no' 也在 'student' table 与名称在同一行。

如何修改查询以显示名称以及 'no' 和 'duedate'?

使用 JOIN;

SELECT loan.duedate, loan.no, student.name FROM loan
INNER JOIN student ON loan.no = student.name

详细了解 MySQL JOIN


而且我不明白你为什么在已经 SQL 的查询中使用 子查询
也可以这样做,

SELECT duedate, no FROM loan ORDER BY duedate DESC LIMIT 1

A join 可让您组合不同表格的列。您需要在 on 子句中定义匹配列(在您的情况下 no,在大多数情况下这是一个 ID)。

SELECT loan.duedate, loan.no, student.name 
FROM loan
left JOIN student on loan.on = student.on

您将需要使用 join。此解决方案假定学生姓名列名为 "name".

SELECT loan.duedate, loan.no, students.name FROM loan 
LEFT JOIN students ON loan.no=students.no 
ORDER BY loan.duedate;

http://www.w3schools.com/sql/sql_join.asp

出于性能目的,您很可能希望在两个表的 no 列上创建索引。

SELECT loan.duedate, loan.no, student.name FROM loan
INNER JOIN student ON loan.no = student.no
ORDER BY loan.duedate DESC LIMIT 1

试试这个..!祝你好运:)