Postgres中的WHERE子句之后不存在非计算列,即使它存在于DB中



使用以下代码:

SELECT * FROM users u
JOIN sales s ON u.id = s.user_id
WHERE u.name = "Guest" AND s.removed = false;

Postgres抛出一个错误,称列";客人";不存在,即使我将name放在引号中,但如果我删除该子句并只保留s.remove = false子句,则查询会编译。它找不到WHERE子句中未计算和提及的列是有原因的吗?

"客人";是不存在的列。

"Guest"是字符串

您想要:

SELECT * FROM users u
JOIN sales s ON u.id = s.user_id
WHERE u.name = 'Guest' AND s.removed = false;

尽管您确实应该指定列名,而不要使用*,因为添加或删除列将使您在将来难以诊断问题。

最新更新