tab1
ID name sex
1       zhang    男
2       wang     男tab2
ID      age
1       28
2       30想要的结果是ID name sex age
1        zhang    男        28
2        wang     男        30我写的sql是:
select tab1.ID,tab1.name,tab1.sex,tab2.age
from tab1,tab2 where tab1.ID=tab2.ID但是我不想直接指定列名 name sex age。因为这个字段都是动态生成的,而且有几十个这样的字段,
请问sql可不可以 在select 后面 不指定列名,只用 select *,让它自动去掉重复列 ID ?谢谢啊

解决方案 »

  1.   

    要直接去重是绝对不行的.
    可以通过动态SQL拼接,但拼接也是件麻烦事.
      

  2.   

    SELECT TAB1.*,TAB2.* FROM TAB1
    INNER JOIN TAB2 ON TAB1.ID=TAB2.ID
      

  3.   

    多谢楼上大侠,我用 inner join 好像去不掉 ,ID还是有2个,我只想要一个ID列
      

  4.   

    那就找列少的表手动指定列
    SELECT TAB1.*,TAB2.age FROM TAB1
    INNER JOIN TAB2 ON TAB1.ID=TAB2.ID
      

  5.   

    我只能想到动态SQL了看看别人有没有好办法
      

  6.   

    CREATE TABLE tab1 (ID INT, name VARCHAR(10), sex VARCHAR(10))
    INSERT TAB1
    SELECT 1 ,     'zhang' ,   '男' UNION ALL
    SELECT 2 ,     'wang'  ,  '男' CREATE TABLE tab2 (ID INT, age INT)
    INSERT TAB2
           
    SELECT 1 ,     28 UNION ALL
    SELECT 2  ,    30 SELECT ID,MAX(NAME)NAME,MAX(SEX)SEX,MAX(AGE)AGE
    FROM 
    (
    SELECT *,''AGE FROM TAB1
    UNION ALL
    SELECT ID,'','',AGE FROM TAB2) AS TGROUP BY IDID          NAME       SEX        AGE         
    ----------- ---------- ---------- ----------- 
    1           zhang      男          28
    2           wang       男          30(所影响的行数为 2 行)??是这种效果?
      

  7.   

    各位大侠,昨天的问题找到原因了,http://topic.csdn.net/u/20090804/10/5fab1310-80a2-4ac5-a7d9-f3ed14cdf5ef.html
    declare @sql varchar(8000)动态sql语句 太长了,好像超过了 8000个字符,@sql 变量放不下,请问怎样解决啊?谢谢  
    谢谢各位大侠昨天帮助我,今天又帮助我,真是感动,不然我就要失业了
      

  8.   

    找到了一个贴子,处理超过8000的问题:
    http://topic.csdn.net/u/20071026/18/157fd32d-6ebc-4dfa-8166-2a487ab3ea60.html我先看看,
      

  9.   

    在执行@SQL=@SQL+'ABC'前加一个判断,如果加起来的长度大于8000就用@SQL2加,如果@SQL2的长度大于0也用@SQL2加
      

  10.   

    ok,我先试试,多谢guguda2008 大侠!!!
      

  11.   

    http://topic.csdn.net/t/20050218/10/3789183.html