从多个表中查询数据的sql语句

如题所述

用union,举例有s1表(a,b,c,d)和s2表(a,c,d,e)和s3表(f,g),里头的字段不同,但在逻辑上有关系
(如有
s1.b=s2.e
s1.a=s3.f
s1.b=s3.g)
示例如下:
------------------------------------------------------------------------------
select
s1.a
as
x,s1.b
as
y,s1.c
as
z
from
s1
union
select
s2.a
as
x,s2.e
as
y,s2.c
as
z
from
s2
union
select
s3.f
as
x,s3.g
as
y,''
as
z
from
s3
------------------------------------------------------------------------------
最终结果会是三张表的和,如果s1有10条记录,s2有3条记录,s3有4条记录,则执行本sql后会得到17条记录,其中来自s3表的数据,第三列一定为空的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-26
创建一个存储过程用来读取
create
PROCEDURE
TESTPERCUDURE
AS
DECLARE
@col
INTEGER
DECLARE
@tablename
varchar(100)
DECLARE
@SQL
AS
VARCHAR(200)
BEGIN
SELECT
TOP
0
QQNUM
INTO
dbo.qqnum
FROM
groupdata.dbo.group001
--创建一个表用来装你的数据
SET
@col=1
SET
@tablename='st'
WHILE
@db_num<=100
begin
SET
@SQL='select
*
FROM
'+@tablename+@col+'
GROUP'+'
where
sname
=
'李三''
--通过循环获取你的表名和数据库名,之后组装成SQL语句,然后执行.你试试.
我没数据库不好修改的
EXECUTE
sp_executesql
@SQL
SET
@col=@col+1
SET
@col=1
END
end
大概像上面的存储过程一样,这样要求表名是st1,st2,...
,st100
相似回答