今天在sybase库中写sql时,将查询的字段用常量替换,并将字段名作为别名,发现查不到数据。
问了人说是:
select 25 as CITY_CODE
FROM DW.O_DX_DW_VOLTE_CITY_H
WHERE CITY_CODE=1 AND START_TIME=20161013140000000
问了人说是:
sybase的sql字段别名,可以直接作为where中的条件。
所以上面的sql可以这样理解,把表中CITY_CODE的值先赋值为25,然后查询表中CITY_CODE为1的数据,所以就没值了。
我觉得给字段取别名的时候还是不要用原字段名,如果不是特别清楚各个库的查询规则,很容易出错。
注意:oracle,mysql,sqlserver库可以这样写,因为它们执行sql的顺序相同,大致都是先from,后where,后select。
所以上面的sql可以这样理解,把表中CITY_CODE的值先赋值为25,然后查询表中CITY_CODE为1的数据,所以就没值了。
我觉得给字段取别名的时候还是不要用原字段名,如果不是特别清楚各个库的查询规则,很容易出错。
注意:oracle,mysql,sqlserver库可以这样写,因为它们执行sql的顺序相同,大致都是先from,后where,后select。