日期:2014-05-18  浏览次数:20436 次

求助mysql多表查询问题
我有一张表A 主键id(自增)
令外有表B、C、D 他们的第一列都是A的主键ID的值(A的主键ID只可能在B、C、D的一个中出现)

我现在想实现这样的功能找出A的前10条记录和匹配到的表明。

非常感谢。


------解决方案--------------------
SQL code

declare @str varchar(10)
set @str=''
if exists (select 1 from B where id in(select top 10 id from A))
begin
set @str='tbl_A'
if exists (select 1 from C where id in(select top 10 id from A))
BEGIN 
  set @str=@str+'tbl_B'
  if exists (select 1 from D where id in(select top 10 id from A))
  begin
  set @str=@str+'tbl_D'
  end
END
print '匹配到的表为:'+@str
end


--try

------解决方案--------------------
SQL code
select a.*,if(b.aid is not null,'B',if(c.aid is not null,'C','D')) as tableName
from a
left join b on a.id=b.aid
left join c on a.id=c.aid
left join d on a.id=d.aid
order by a.id 
limit 10;