在表连接的SELECT语句中经常要对引用的列加上各自的表别名,例如:
SELECT a.colx,b.coly FROM table1 AS a ,table2 AS b WHERE a.name = b.name
但是,不能再对含有表别名的列赋常量值,例如不能这样:
SELECT a.colx = 常量,b.coly FROM table1 AS a,table2 AS b WHERE a.name = b.name
甚至也不能这样:
SELECT a.colx = 常量 FROM table1 AS a请教大家解决的办法,多谢!
SELECT a.colx,b.coly FROM table1 AS a ,table2 AS b WHERE a.name = b.name
但是,不能再对含有表别名的列赋常量值,例如不能这样:
SELECT a.colx = 常量,b.coly FROM table1 AS a,table2 AS b WHERE a.name = b.name
甚至也不能这样:
SELECT a.colx = 常量 FROM table1 AS a请教大家解决的办法,多谢!
解决方案 »
- 如何根据单据明细表中的关联字段更新pro_ppamount
- 还是重复记录问题?
- 转换十六进制提示HEX为不可识别的内置函数,请帮忙解答,TKS!
- 数据库那些对象的脚本可以直接在系统表里找到?
- SQL 企业管理器找不开,提示文件不存在,或没有权限,以前还好好的,今天怎么就不行了
- 请教,我把 SQL SERVER 2000 个人版安装后,服务器是运行了,可是总是连接不上服务器,这是什么原因啊?谢谢!
- 发现这个语句是错的啊???不能执行
- 数据库设计
- 求助,怎样实现下图中流程的sql语句
- 如果是一个成熟的SQL程序员的话,现在的月薪能使多少啊!?地区有别
- 如何替换掉括号和括号里面的文字
- 存储过程的一个简单问题
--------------------------------------------------------------直接select 常量 as colx from table1 a,不就可以吗?你想
[a.aname]='xxxx'
为什么要加a.那?
如果colx在两个表里面都有,那么你如果想让该列值为常数的话,就不在呼到底是从那个表查出来的
如果仅在某个表里有,那也不用前面加表前缀阿?
insert cRe select '2001-3021'
union select '2001-3031'
union select '2001-3032'
GO
--此句可以通过啊...
select vID=01 from credrop table cRe
为什么要加a.那?
如果colx在两个表里面都有,那么你如果想让该列值为常数的话,就不在呼到底是从那个表查出来的
如果仅在某个表里有,那也不用前面加表前缀阿?
----------------------------------------------------有这种情况还是要区分表的,当然实际中这里变量i不一定就是普通变量:
DECLARE @i int
SET @i=1
SELECT [x.xname]=(CASE @i WHEN 1 THEN 'bbb' ELSE 'ccc' END) FROM xtable x另外楼上的,请看清楼主是说表用别名.
select A.vID=01 from cre A --此句无法赋值..关注!
“直接select 常量 as colx from table1 a,不就可以吗?”
--在多表连接的时候,有时多表中的列可能重名,如果要在语句的其它地方(比如WHERE)引用重名的列,这时为列指定表别名是必不可少的。如果使用 "SELECT 常量 as colx"无法保证引用的列准确无误了。
在复杂查询应用中,对含表别名的列赋值有时是必须的,因为还涉及到数据类型的问题。按照fcuandy(www.iaspnet.com)朋友提供的办法只要常量符合该列数据类型的要求,就会保证查询结果中该列的数据类型不变,如果使用 "select 常量 as colx"则无法保证查询结果中colx的数据类型不变,在有些应用中,是必须严格保证数据类型一致的。