【发布时间】:2021-04-03 02:25:21
【问题描述】:
我有以下查询返回预期结果:
SELECT
locations.*,
(
SELECT
id
FROM
hauls
WHERE
haul_type_id = 1
AND location_id = locations.id
ORDER BY
created_at DESC
LIMIT 1) AS last_delivery_id,
(
SELECT
id
FROM
hauls
WHERE
haul_type_id = 2
AND location_id = locations.id
ORDER BY
created_at DESC
LIMIT 1) AS last_pickup_id
FROM
locations
我想在父查询的 case 语句中使用子查询的结果(last_delivery_id、last_pickup_id),但出现错误:
错误:未知列“last_delivery_id”
SELECT
locations.*,
case when last_delivery_id = 1 then 'pending' when last_delivery_id = 2 then 'active' end as status,
(
SELECT
id
FROM
hauls
WHERE
haul_type_id = 1
AND location_id = locations.id
ORDER BY
created_at DESC
LIMIT 1) AS last_delivery_id,
(
SELECT
id
FROM
hauls
WHERE
haul_type_id = 2
AND location_id = locations.id
ORDER BY
created_at DESC
LIMIT 1) AS last_pickup_id
FROM
locations
【问题讨论】:
-
将您的第一个查询用作子查询,然后您可以选择并使用 2 个派生列。
标签: mysql sql datetime subquery lateral-join