使用以下代码:
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;
尽管您确实应该指定列名,而不要使用*,因为添加或删除列将使您在将来难以诊断问题。