在表连接的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请教大家解决的办法,多谢!

解决方案 »

  1.   

    SELECT a.colx = 常量 FROM table1 AS a
    --------------------------------------------------------------直接select 常量 as colx from table1 a,不就可以吗?你想
      

  2.   

    加标识符就可以了.
    [a.aname]='xxxx'
      

  3.   


    为什么要加a.那?
    如果colx在两个表里面都有,那么你如果想让该列值为常数的话,就不在呼到底是从那个表查出来的
    如果仅在某个表里有,那也不用前面加表前缀阿?
      

  4.   

    create table cRe(vId varchar(10))
    insert  cRe  select '2001-3021'
    union select  '2001-3031'
    union select '2001-3032'
    GO
    --此句可以通过啊...
    select vID=01 from credrop table cRe
      

  5.   

    coolingpipe(冷箫轻笛) ( ) 信誉:100  2006-06-12 11:19:00  得分: 0  
     
     
       
    为什么要加a.那?
    如果colx在两个表里面都有,那么你如果想让该列值为常数的话,就不在呼到底是从那个表查出来的
    如果仅在某个表里有,那也不用前面加表前缀阿?
    ----------------------------------------------------有这种情况还是要区分表的,当然实际中这里变量i不一定就是普通变量:
    DECLARE @i int
    SET @i=1
    SELECT [x.xname]=(CASE @i WHEN 1 THEN 'bbb' ELSE 'ccc' END) FROM xtable x另外楼上的,请看清楼主是说表用别名.
      
     
      

  6.   

    LZ原来是提别名的问题,好像是这样呢...
    select A.vID=01 from cre A  --此句无法赋值..关注!
      

  7.   

    多谢fcuandy(www.iaspnet.com)朋友的指教!这个办法好,问题解决!to: playwarcraft朋友
    “直接select 常量 as colx from table1 a,不就可以吗?”
    --在多表连接的时候,有时多表中的列可能重名,如果要在语句的其它地方(比如WHERE)引用重名的列,这时为列指定表别名是必不可少的。如果使用 "SELECT 常量 as colx"无法保证引用的列准确无误了。
      

  8.   

    多谢各位朋友的热心参与,fcuandy(www.iaspnet.com)朋友提供的办法是可行的(可能是唯一的解决办法)!
    在复杂查询应用中,对含表别名的列赋值有时是必须的,因为还涉及到数据类型的问题。按照fcuandy(www.iaspnet.com)朋友提供的办法只要常量符合该列数据类型的要求,就会保证查询结果中该列的数据类型不变,如果使用 "select 常量 as colx"则无法保证查询结果中colx的数据类型不变,在有些应用中,是必须严格保证数据类型一致的。