问题描述
SELECT cars.*,manufacturers.company_name AS manufacturer_company_name,companies.mailing_name AS company_mailing_name,(SELECT car_documents.file_url FROM car_documents
WHERE car_documents.car_id = cars.id AND car_documents.document_type = 1 LIMIT 1) AS ins_file_url,(SELECT car_documents.file_url FROM car_documents
WHERE car_documents.car_id = cars.id AND car_documents.document_type = 3 LIMIT 1) AS guar_file_url,FROM "cars"
INNER JOIN "companies" ON "companies"."id" = "cars"."company_id"
LEFT JOIN shippers ON shippers.id = cars.shipper_id
WHERE (cars.status IS NULL
AND cars.delivered < '2021-01-14'
AND ins_file_url IS NOT NULL)
为什么我不能在 ins_file_url
子句中使用别名列 WHERE
?这种行为有什么解决方法吗?
提前致谢
解决方法
只需在子查询中使用您的整个查询并对子查询应用 where
条件,如下所示:
Select * from
(SELECT cars.*,manufacturers.company_name AS manufacturer_company_name,companies.mailing_name AS company_mailing_name,(SELECT car_documents.file_url FROM car_documents
WHERE car_documents.car_id = cars.id AND car_documents.document_type = 1 LIMIT 1) AS ins_file_url,(SELECT car_documents.file_url FROM car_documents
WHERE car_documents.car_id = cars.id AND car_documents.document_type = 3 LIMIT 1) AS guar_file_url,FROM "cars"
INNER JOIN "companies" ON "companies"."id" = "cars"."company_id"
LEFT JOIN shippers ON shippers.id = cars.shipper_id
WHERE cars.status IS NULL
AND cars.delivered < '2021-01-14' ) t
Where ins_file_url IS NOT NULL
,
尝试在别名周围使用双引号:
SELECT cars.*,FROM "cars"
INNER JOIN "companies" ON "companies"."id" = "cars"."company_id"
LEFT JOIN shippers ON shippers.id = cars.shipper_id
WHERE (cars.status IS NULL
AND cars.delivered < '2021-01-14'
AND "ins_file_url" IS NOT NULL)