【发布时间】:2021-01-26 12:11:58
【问题描述】:
假设我有以下 SQLite 查询,我在其中计算两种产品价格的总和:
SELECT p1.cost + p2.cost FROM products as p1, products as p2 WHERE p1.cost + p2.cost < 100;
在 SELECT 子句和 WHERE 子句中都写 p1.cost + p2.cost 有点低效,所以我们可以这样修复它:
SELECT p1.cost + p2.cost AS total FROM products as p1, products as p2 WHERE total < 100;
现在假设我想将查询结果中的列命名为“cost”而不是“total”。尝试这样做会导致以下查询:
SELECT p1.cost + p2.cost AS cost FROM products as p1, products as p2 WHERE cost < 100;
但是,这会导致“列名不明确”错误,因为 SQLite 无法确定 WHERE 子句中的“成本”是指 p1.cost、p2.cost 还是 SELECT 中创建的“成本”条款。如何明确表明我正在尝试选择在 SELECT 子句中创建的“成本”?
【问题讨论】:
-
SQL 通常不支持在
WHERE子句中使用列别名。重复表达式。