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
试试这个..!祝你好运:)
我有一个简单的查询,它从 '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
试试这个..!祝你好运:)