我有 2 张 table
- 出租
- 实体
实体持有有关可出租元素的信息(租赁护理) Rentals 保存实体特定租赁的信息,它通过外键链接到实体的 id:
表:实体
--------------------------
| id | name |
--------------------------
| 1 | Toyota Spacewagon |
| 2 | Volvo SuperCar |
表:租金
---------------------------------------------------------------
| id | entity_id | rental_date | return_date |
---------------------------------------------------------------
| 1 | 1 | 2016-06-30 12:00:00 | 2016-07-01 12:00:00 |
| 2 | 1 | 2016-06-28 12:00:00 | 2016-07-30 10:00:00 |
| 3 | 1 | 2016-05-30 09:00:00 | 2016-06-01 13:00:00 |
我想要做的是获取所有实体的列表,以及它们的最后租赁日期(以确定它们当前的租赁状态),但是我不知道如何用 SQL 表达这一点。
我的预期结果:
-------------------------------------------------
| id | name | rental_date |
-------------------------------------------------
| 1 | Toyota Spacewagon | 2016-06-30 12:00:00 |
| 2 | Volvo SuperCar | (null) |
从未租赁过的实体应在租赁日期返回 null,已租赁的汽车应有最后一次租赁
与此类似的东西,但具有有效的语法......
SELECT id, name rental_date AS (SELECT rental_date FROM rentals WHERE entity_id = THIS_ROW'S_ENTITY) FROM entities;
最佳答案
这样的事情应该有效:
SELECT e.Id,e.name,r.rental_date
FROM entities e
LEFT JOIN
(
SELECT entity_id,MAX(rental_date) AS rental_date
FROM rentals
GROUP BY entity_id
) r ON r.entity_id=e.Id
关于mysql - 如何使用 SQL 查询的结果作为另一个查询中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147055/