SQLite–重用WHERE子句中SELECT子句中的值时出现问题
假设我有以下SQLite查询,其中我计算两种产品的价格之和: 从产品中选择p1.cost+p2.cost作为p1,产品作为p2,其中p1.cost+p2.cost<100 在SELECT子句和WHERE子句中写入p1.cost+p2.cost有点低效,因此我们可以这样解决它: 选择p1.cost+p2.cost作为总计,从产品中选择p1,产品中选择p2,其中总计<100 现在让我们假设我想在查询结果cost中命名列,而不是total。尝试这样做将导致此查询: 选择p1.cost+p2.cost作为成本,产品作为p1,产品作为p2,其中成本<100SQLite–重用WHERE子句中SELECT子句中的值时出现问题,sql,database,sqlite,Sql,Database,Sqlite,假设我有以下SQLite查询,其中我计算两种产品的价格之和: 从产品中选择p1.cost+p2.cost作为p1,产品作为p2,其中p1.cost+p2.cost
但是,这会导致一个不明确的列名错误,因为SQLite无法确定WHERE子句中的成本是指p1.cost、p2.cost还是SELECT子句中创建的成本。如何清楚地表明我正在尝试选择select子句中创建的成本?最好使用子查询或CTE:
SELECT p12.*
FROM (SELECT p1.id as id1, p2.id as id2, p1.cost + p2.cost AS total
FROM products p1 CROSS JOIN
products p2
) p12
WHERE total < 100;
SELECT中定义的列别名不允许出现在该SELECT的WHERE或ON子句中。时期这适用于所有数据库引擎,包括SQLite。SQL通常不支持在WHERE子句中使用列别名。重复这个表达。好的,谢谢你的信息!