sqlserver远程查询mysql数据库,odbc驱动和链接服务器我都建好了
是关于openquery的多表查询问题declare @MySQLTest varchar(30)
declare @strsql varchar(8000)
declare @Name varchar(30)
set @MySQLTest='crazy1'
set @name='mhbsam'
set @strsql = ('SELECT * FROM OPENQUERY ('+@MySQLTest+' ,''select a.*,b.* from 表 a,表 b '') where a.id=b.id  and  b.username='''+@Name+'''')
print @strsql
exec(@strsql)
报错:服务器: 消息 107,级别 16,状态 2,行 1
列前缀 'a' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'b' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'b' 与查询中所用的表名或别名不匹配。是openquery不支持多表,还是我的写法有误,单表查询时没问题,请指教~

解决方案 »

  1.   

    set @strsql = ('SELECT * FROM OPENQUERY ('+@MySQLTest+' ,''select a.*,b.* from 表a a,表b b  where a.id=b.id  and  b.username='''+@Name+''')')
      

  2.   

    try:
    -------------------------------------------------------------------------------------------------------------------------------------
    declare @MySQLTest varchar(30)
    declare @strsql varchar(8000)
    declare @Name varchar(30)
    set @MySQLTest='crazy1'
    set @name='mhbsam'
    set @strsql = ('SELECT * FROM OPENQUERY ('+@MySQLTest+' ,''select * from 表 '') a,OPENQUERY ('+@MySQLTest+' ,''select * from 表 '') b where a.id=b.id  and  b.username='''+@Name+'''')
    print @strsql
    exec(@strsql)
      

  3.   

    还少两个单引号 :
    set @strsql = ('SELECT * FROM OPENQUERY ('+@MySQLTest+' ,''select a.*,b.* from 表a a,表b b  where a.id=b.id  and  b.username='''+@Name+''''')')
      

  4.   

    or try:
    -------------------------------------------------------------------------------------------------------------------------------------
    declare @MySQLTest varchar(30)
    declare @strsql varchar(8000)
    declare @Name varchar(30)
    set @MySQLTest='crazy1'
    set @name='mhbsam'
    set @strsql = ('SELECT * FROM OPENQUERY ('+@MySQLTest+' ,''select a.*,b.* from 表 a,表 b where a.id=b.id  and  b.username='''''+@Name+''''''') ')
    print @strsql
    exec(@strsql)
      

  5.   

    libin_ftsafe(子陌红尘)提供的都可以,通过测试,谢谢啊,结帖~