0

使用以下代码:

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

Postgres 会抛出一个错误,指出“Guest”列不存在,即使我加上name引号,但如果我删除该子句并只保留该s.remove = false子句,则查询编译。为什么它找不到 WHERE 子句中未计算和提及的列?

4

1 回答 1

0

“Guest”是一个不存在的列。

'Guest' 是一个字符串

你要:

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

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

于 2021-12-09T23:44:48.183 回答