select 1+2+3+4 as abc from table1 where abc>0
这样的语句在mssql里不会出错,在mysql里怎么就不行呢?
现在我就要通过这个自定义的列进行筛选数据.
请哪位告诉我一下这样的语句,在mysql里该怎么写.另外再请教一下,mysql能不能自定义一个列,这个列是由其他几列的动态计算结果.
这样的语句在mssql里不会出错,在mysql里怎么就不行呢?
现在我就要通过这个自定义的列进行筛选数据.
请哪位告诉我一下这样的语句,在mysql里该怎么写.另外再请教一下,mysql能不能自定义一个列,这个列是由其他几列的动态计算结果.
先执行 FROM ,如果有多个表的话,会先产生迪卡尔积..
如果有 ON ,那在迪卡尔积中进行ON的匹配..
再执行 WHERE ,进行行的筛选..
再是 SELECT,进行投影..所以很清楚了..是先进行WHERE的..所以在WHERE时,,看不到SELECT投影的别名...
我不想在where计算一次,在select后面又计算一次,共计算两次,那样会浪费很多时间.
select a+b+c as abc where abc>0
a,b,c都是列名称,运算可能是加减乘除,再加一些if等函数组合而成.
实际计算情况稍复杂一些,但是看到这句,我想大家应该知道我的实际用途应该是什么了.
如果这个问题有办法解决了,上面的问题就应该不是问题了.
方法一: select a+b+c as abc from tbl where a+b+c>0
方法二: select * from (select a+b+c as abc from tbl) t where abc>0
任何一个数据库中估计都没办法在表中实现这么个列。一般是通过视图来实现。
create view v_tbl as select a+b+c as abc from tbl; 然后可以 select * from v_tbl where abc >0;
mssql有计算列的概念..CREATE TABLE tb(a int,b int,c int,d AS a+b+c)
我的表已经建好了,现在是用sqlyong操作mysql数据库的,不知道这样的计算列,能不能后来添加.怎么添加
select a+b+c as abc from table1 where a+b+c>0;