sql 在多个表中查询一条记录

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


...全文
226 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
等不到来世 2015-09-22
  • 打赏
  • 举报
回复

--参考:
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
zxdpxl 2015-09-22
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
前一个贴不是回复过你了?
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
谢谢您的回复,我是在想有没有更方便的方法去完成这个过程.
Tiger_Zhao 2015-09-21
  • 打赏
  • 举报
回复
前一个贴不是回复过你了?
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

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧