【发布时间】:2021-01-21 09:03:48
【问题描述】:
我在 PostgreSQL 中有这个查询:
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)
为什么我不能在WHERE 子句中使用别名列ins_file_url?这种行为有什么解决方法吗?
提前谢谢你
【问题讨论】:
-
想象一下,您在某个表中有相同的列,并有一个具有该名称的别名。 DBMS 应该如何知道,列是什么?好的,通过子查询你可以使用像
tableAlias.columnName这样的表别名,但是对于本地计算的列(即在select列表中)你应该怎么做呢?
标签: sql postgresql column-alias