sql 在多个表中查询一条记录,该如何解决
sql 在多个表中查询一条记录
小弟刚刚研究这个SQL存储过程很久了,
这个数据库中有很多的表名字是以USB开头的,表USB1th、USB2th、USB3th........USB45th,每一个表都是存储的U盘上面的料号,每增加一批U盘都会添加一个表。这些表的字段名字、数据类型、长度都是一样的。详细信息见图。
现在想通过一个存储过程查询这个“100000-B22”料号,查询到在那个表中、它的光盘大小(ISO_GB),MD5(Check_MD5)、光盘类型(ISO_Type)、MD5校验结果(Result)。这个存储过程应该如何创建?PS:我的这个数据库比较小,只有10MB左右。

------解决思路----------------------
前一个贴不是回复过你了?
------解决思路----------------------
小弟刚刚研究这个SQL存储过程很久了,
这个数据库中有很多的表名字是以USB开头的,表USB1th、USB2th、USB3th........USB45th,每一个表都是存储的U盘上面的料号,每增加一批U盘都会添加一个表。这些表的字段名字、数据类型、长度都是一样的。详细信息见图。
现在想通过一个存储过程查询这个“100000-B22”料号,查询到在那个表中、它的光盘大小(ISO_GB),MD5(Check_MD5)、光盘类型(ISO_Type)、MD5校验结果(Result)。这个存储过程应该如何创建?PS:我的这个数据库比较小,只有10MB左右。
------解决思路----------------------
前一个贴不是回复过你了?
CREATE PROCEDURE Qeury(@PN varchar(10))
AS
SELECT ISO_GB, Check_MD5, ISO_Type, Result
FROM (
SELECT * FROM usb1th WHERE PN=@PN
UNION ALL
SELECT * FROM usb2th WHERE PN=@PN
UNION ALL
/*...*/
SELECT * FROM usb45th WHERE PN=@PN
) t
GO
------解决思路----------------------
--参考:
create table #t(TableName nvarchar(32),ISO_GB decimal(18,3),Check_MD5 varchar(50),ISO_Type varchar(50),Result varchar(50))
exec sp_MSforeachtable @command1="insert #t select '?',ISO_GB,Check_MD5,ISO_Type,Result from ? where PN='100000-B22'",
@whereand="and o.name like 'USB%'"
select * from #t