我想以这种形式使用MySQL:
SELECT 1 AS one, one*2 AS two
因为它比
更短更甜SELECT one*2 AS two FROM ( SELECT 1 AS one ) AS sub1
但前者似乎不起作用,因为它希望一个是一个列。
在没有子查询的情况下,有没有更简单的方法来实现这种效果?
不,SELECT 2 AS two
不是一种选择。 ;)
答案 0 :(得分:3)
考虑这个SQL代码
SELECT 1 AS one, one*2 AS two
从SQL的角度来看语言(为什么不呢; mysql有很好的跟踪ISO / ANSI SQL标准的记录),你的one
不是变量;而是一个列相关名称。您不能在SELECT
子句中使用具有相同范围的相关名,因此会出错。
FWIW你的“更短更甜”的语法在使用MS Access数据库引擎时确实有效 - 是你学习它的地方吗?遗憾的是,Access数据库引擎在遵守标准方面的记录很差。据说需要很长时间才能学习Access-speak和学习SQL代码;)
答案 1 :(得分:2)
select @one := 1 as one, 2 * @one as two;