例如,
SELECT cost, (SELECT MIN(cost) FROM stock) AS min_cost, price - min_cost FROM stock
当我执行这个sql语句时,我得到以下错误。原因是什么? ERROR 1054 (42S22) at line 1: Unknown column 'min_cost' in 'field list'
ERROR 1054 (42S22) at line 1: Unknown column 'min_cost' in 'field list'
m3eecexj1#
不能在主查询中直接使用需要在子查询中生成的别名列。这种用法也可以作为一种替代方法:
SELECT cost, price - (SELECT MIN(cost) FROM stock) AS cost_diff FROM stock
e5nszbig2#
查询中表达式生成的列不能立即用于 WHERE 条款,尽管 GROUP BY , HAVING ,或 ORDER BY 条款。如果需要在 WHERE 子句中,您需要将查询作为另一个查询的“表表达式”包含。例如:
WHERE
GROUP BY
HAVING
ORDER BY
select *, price - min_cost from ( SELECT cost, (SELECT MIN(cost) FROM stock) AS min_cost FROM stock ) x
可以使用此策略为需要进一步组合到其他复杂公式/表达式中的复杂表达式生成命名列。
yyyllmsg3#
您需要编写表达式,别名将无法识别
SELECT cost, (SELECT MIN(cost) FROM stock) AS min_cost, price - (SELECT MIN(cost) FROM stock) FROM stock
3条答案
按热度按时间m3eecexj1#
不能在主查询中直接使用需要在子查询中生成的别名列。
这种用法也可以作为一种替代方法:
e5nszbig2#
查询中表达式生成的列不能立即用于
WHERE
条款,尽管GROUP BY
,HAVING
,或ORDER BY
条款。如果需要在
WHERE
子句中,您需要将查询作为另一个查询的“表表达式”包含。例如:
可以使用此策略为需要进一步组合到其他复杂公式/表达式中的复杂表达式生成命名列。
yyyllmsg3#
您需要编写表达式,别名将无法识别