在WHERE子句中使用別名專欄中,我有一個這樣的查詢:在PostgreSQL
SELECT
jobs.*,
(
CASE
WHEN lead_informations.state IS NOT NULL THEN lead_informations.state
ELSE 'NEW'
END
) AS lead_state
FROM
jobs
LEFT JOIN lead_informations ON
lead_informations.job_id = jobs.id
AND
lead_informations.mechanic_id = 3
WHERE
lead_state = 'NEW'
其中提供了以下錯誤:
PGError: ERROR: column "lead_state" does not exist
LINE 1: ...s.id AND lead_informations.mechanic_id = 3 WHERE (lead_state...
在MySQL這是有效的,但顯然不是在PostgreSQL的。從我所能收集的信息來看,原因是查詢的SELECT
部分的評估晚於WHERE
部分。這個問題是否有一個共同的解決方法?
我想這是不是在PostgreSQL的有效... – pcent 2010-07-13 20:47:08
@pcent這將解釋錯誤,然後... – troelskn 2010-07-14 10:10:58
這是一個很好的問題,但一個奇怪的例子查詢。您永遠不想爲該列選擇非NULL值,因此整個CASE語句完全不必要。 – phils 2012-09-04 05:07:54