两个查询结果的记录数一样,字段不一样, 
如何用sql语句将两个查询结果横向联合成一个查询结果? 
谢谢。。 
 

解决方案 »

  1.   


    a inner join b on a.col=b.col 
      

  2.   

    不知道你要的是不是这种意思
    select a.* ,b.* from a,b
    where a.col = b.col
      

  3.   

    7楼正是需要出的结果,
    只是如果a,b如果是查询,用一个sql语句应该怎么写?
    比如a是select * from table1
    b是select * from table2
      

  4.   

    --> liangCK小梁 于2008-10-31
    --> 生成测试数据: @T1
    DECLARE @T1 TABLE (BH VARCHAR(2),TNAME VARCHAR(4),SEX VARCHAR(2))
    INSERT INTO @T1
    SELECT '01','张三','男' UNION ALL
    SELECT '02','李四','男' UNION ALL
    SELECT '03','王五','女'
    --> 生成测试数据: @T2
    DECLARE @T2 TABLE (DZ VARCHAR(6),ZW VARCHAR(6))
    INSERT INTO @T2
    SELECT '西环路','学生' UNION ALL
    SELECT '东环路','工程师' UNION ALL
    SELECT '南环路','总经理'--SQL查询如下:SELECT ID=IDENTITY(INT,1,1),* INTO #T1 FROM @T1;SELECT ID=IDENTITY(INT,1,1),* INTO #T2 FROM @T2;SELECT A.BH,A.TNAME,A.SEX,B.DZ,B.ZW
    FROM #T1 AS A
        LEFT JOIN #T2 AS B
           ON A.ID=B.ID/*
    BH   TNAME SEX  DZ     ZW
    ---- ----- ---- ------ ------
    01   张三    男    西环路    学生
    02   李四    男    东环路    工程师
    03   王五    女    南环路    总经理(3 行受影响)
    */
      

  5.   

    http://topic.csdn.net/u/20081031/10/e6e412d8-f204-41df-bbe4-a24878807370.html
      

  6.   

    查询出来的结果必须得是符合数据库的定义的如果LZ只是需要把两个结果左右合并成一张放在一起的表那么个人认为分两种情况:
    1.A表和B表中都有楼主说的一样的字段col,而col的值是a表和b表都不相同,也就是说a表中和b表中的某一col值无法和另外一表中任何的值对应,那么这种情况建议楼主干脆把两表的结果复制粘贴到excel,然后再导入到数据库里。麻烦一点,就是每个表专门建一个ID自增字段,使得全部都一一对应,然后你使用inner join 就可以了。
    2.如果两表中的col的值在各自表中都是唯一且在另外一长表都有且仅有一个值与之对应,那么楼主也直接使用inner join 就可以了
    也就是使用:
    select a.* ,b.* from a,b
    where a.col = b.col
      

  7.   

    上面的几个方法对于a,b是表有效,
    只是如果a,b是两个查询,用一个sql语句应该怎么写? 
    比如a是select * from table1 
    b是select * from table2
      

  8.   

    没有重复
    sql1
    union
    sql2
    有重复
    sql1
    union all
    sql2
      

  9.   

    这个是纵向 横向估计是这样
    select * from (sql1) a left join (s1l2) b on....
      

  10.   


    ...
    from 表1 a ,表2 b where a.字段=b.字段
      

  11.   


    楼主可使用如下的语句:   
    SELECT A.*,B.* FROM 
    (
    select * from table1 
    ) A 
    JOIN 
    (
    select * from table2
    ) B 
    ON A.COL=B.COL
      

  12.   

    18楼的方法好用,谢谢了。
    不知如何将这种方法推广至3个以上的查询?
    假设第三个查询是select * from tb3
      

  13.   

    一样的啊,后面接着连接子查询就可以了:SELECT A.*,B.*,C.* FROM 
    (
    select * from table1 
    ) A 
    JOIN 
    (
    select * from table2
    ) B 
    ON A.COL=B.COL
    JOIN 
    (
    select * from tb3 
    ) C
    ON B.COL=C.COL不过仍然有点想知道楼主是碰到了什么要的实际情况,需要横向合并。
      

  14.   

    21楼,
    我用的是access,
    18楼的语句需要将join改为inner join才有效,
    使用21楼的语句将join改为inner join后出现了语法错误(操作符丢失)在查询表达式
    “A.COL=B.COL
    JOIN 
    (
    select * from tb3 
    ) C
    ON B.COL=C.COL
    ”中,
    请问在access中该功能如何实现?
      

  15.   

    是不是access不允许两张以上的表关联啊?
    PS,换个大型关系数据库耍耍得了。
      

  16.   

    如果access中无法实现多表关联,
    那么有没有其他方法解决上面提出的问题呢?
    问题:
    现有几个表共用一个分类表, 
    想将这几个表的分类汇总结果放在一个页面(同一个表格)中输出, 
    有什么更好的解决办法吗?
    问题好象主要出在where子句上, 
    如果仅是一个表tb2使用一个分类表tb1,可以用
    select sum(tb2.col3) from tb1,tb2 where tb1.col=tb2.col group by 
    tb1.col
    的形式,如果是两个表tb2,tb3使用一个分类表tb1,却无法使用
    select sum(tb2.col3),sum(tb3.col5) from tb1,tb2,tb3 where 
    tb1.col=tb2.col and tb1.col=tb3.col group by tb1.col
    的形式,该语句运行后的数据明显错误,
    不知是什么原因?
    如何解决? 
      

  17.   

    union  or  union all
      

  18.   

    Access可以实现多表关联,好像要加括号。你可以用查询设计器,联接3张表,然后切换到SQL试图看看语法
      

  19.   

    楼主虽然已结贴,但是,其实除了困扰楼主的表和表的链接问题
    还有一个access数据库关联问题
    access在关联2张表以上的话,使用的语句必须得用括号括起来
    一层一层 JOIN 下去。例如:
    Select *
    FROM (aa LEFT JOIN bb ON aa.a = bb.a ) LEFT JOIN cc ON cc.a = bb.a;其实对于这个access多表关联,这个我也是baidu出来的
    http://www.cnode.cn/article.asp?id=145