sql 查询数据库中多个表中指定料号的行数据。

zxdpxl 2015-09-14 11:21:20
我在SQL中创建了一个数据库(ISOMM),这个数据库中有很多表,它们的名字是USB1th、USB2th、USB3th........USB45th,还有一个USBDownloadlist的表。以上这些表的格式、数据类型都是一样的。这些表中有料号、物料类型、货运单号等等信息。要查询的数据都在USB1th、USB2th、USB3th........USB45th和USBDownloadlist表中,我想通过料号(比如:10000-B22)查询到料号所在行数据。这个应该怎么操作,哪位大神帮帮忙,我先谢谢了。
...全文
235 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Haytor 2015-09-21
  • 打赏
  • 举报
回复
建议你建个视图把你需要查询的表UNION ALL,这样以后就查这个视图就可以了。
zxdpxl 2015-09-21
  • 打赏
  • 举报
回复
引用 1 楼 qq_18219519 的回复:
你说的太笼统了,如果数据库比较小,可以试试下面这个存储过程
CREATE PROCEDURE [dbo].[SP_FindValueInDB]
(
    @value VARCHAR(1024)
)        
AS
BEGIN

SET NOCOUNT ON;
DECLARE @sql VARCHAR(1024) 
DECLARE @table VARCHAR(64) 
DECLARE @column VARCHAR(64) 

CREATE TABLE #t ( 
    tablename VARCHAR(64), 
    columnname VARCHAR(64) 
) 

DECLARE TABLES CURSOR 
FOR 

    SELECT o.name, c.name 
    FROM syscolumns c 
    INNER JOIN sysobjects o ON c.id = o.id 
    WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239) 
    ORDER BY o.name, c.name 

OPEN TABLES 

FETCH NEXT FROM TABLES 
INTO @table, @column 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] ' 
    SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') ' 
    SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', ''' 
    SET @sql = @sql + @column + ''')' 

    EXEC(@sql) 

    FETCH NEXT FROM TABLES 
    INTO @table, @column 
END 

CLOSE TABLES 
DEALLOCATE TABLES 

SELECT * 
FROM #t 

DROP TABLE #t 


End


--下面是执行语句,先创建好存储过程后再执行,引号里面填写所需查找内容
--EXEC [SP_FindValueInDB] '张三'
对于您的这个存储过程我非常需要。小弟我刚刚接触SQL Server还不是很懂得写存储过程。 我是想通过料号“100000-B22”查询到这个料号在那个表中、它的光盘大小(ISO_GB),MD5(Check_MD5)、光盘类型(ISO_Type)、MD5校验结果(Result)。想实现这个功能应该如何创建存储过程?PS:我的这个数据库比较小。只有10MB左右。
zxdpxl 2015-09-21
  • 打赏
  • 举报
回复
对于您的这个存储过程我非常需要。小弟我刚刚接触SQL Server还不是很懂得写存储过程。 我是想通过料号“100000-B22”查询到这个料号在那个表中、它的光盘大小(ISO_GB),MD5(Check_MD5)、光盘类型(ISO_Type)、MD5校验结果(Result)。想实现这个功能应该如何创建存储过程?PS:我的这个数据库比较小。只有10MB左右。
zxdpxl 2015-09-21
  • 打赏
  • 举报
回复
非常感谢以上两位网友的答案。
  • 打赏
  • 举报
回复
返回结果以后自己查就行了,比如返回USB45th 那么就
select ISO_GB,Check_MD5,ISO_Type,Result from USB45th 
根据实际填写from 后的表名
Tiger_Zhao 2015-09-14
  • 打赏
  • 举报
回复
SELECT * FROM usb1th WHERE 料号='10000-B22'
UNION ALL
SELECT * FROM usb2th WHERE 料号='10000-B22'
UNION ALL
...
SELECT * FROM usb45th WHERE 料号='10000-B22'
UNION ALL
SELECT * FROM USBDownloadlist WHERE 料号='10000-B22'
  • 打赏
  • 举报
回复
你说的太笼统了,如果数据库比较小,可以试试下面这个存储过程
CREATE PROCEDURE [dbo].[SP_FindValueInDB]
(
    @value VARCHAR(1024)
)        
AS
BEGIN

SET NOCOUNT ON;
DECLARE @sql VARCHAR(1024) 
DECLARE @table VARCHAR(64) 
DECLARE @column VARCHAR(64) 

CREATE TABLE #t ( 
    tablename VARCHAR(64), 
    columnname VARCHAR(64) 
) 

DECLARE TABLES CURSOR 
FOR 

    SELECT o.name, c.name 
    FROM syscolumns c 
    INNER JOIN sysobjects o ON c.id = o.id 
    WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239) 
    ORDER BY o.name, c.name 

OPEN TABLES 

FETCH NEXT FROM TABLES 
INTO @table, @column 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] ' 
    SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') ' 
    SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', ''' 
    SET @sql = @sql + @column + ''')' 

    EXEC(@sql) 

    FETCH NEXT FROM TABLES 
    INTO @table, @column 
END 

CLOSE TABLES 
DEALLOCATE TABLES 

SELECT * 
FROM #t 

DROP TABLE #t 


End


--下面是执行语句,先创建好存储过程后再执行,引号里面填写所需查找内容
--EXEC [SP_FindValueInDB] '张三'
内容概要:本文档是2025年全国广播电视技术能手竞赛IPTV专业的竞赛内容大纲,旨在指导参赛选手准备比赛。竞赛分为理论和实操两大部分。理论部分涵盖基本知识、基础理论和专业知识,包括法律法规、技术标准、IPTV技术基础、信号传输与分发、网络和数据安全等。实操部分则涉及IPTV系统设备、仪器设备的操作使用和指标测量。具体内容包括IPTV系统架构、传输技术与指标、设备配置及维护、专业技能如测量工具使用、视音频指标测量、直播点播协议分析、播出网络性能测量、网络安全数据分析以及系统故障排查等。 适合人群:从事或有意从事IPTV相关工作的技术人员,尤其是有志于参加全国广播电视技术能手竞赛的专业人士。 使用场景及目标:①帮助参赛选手全面了解并掌握IPTV相关的法规文件和技术标准;②提升选手对IPTV系统架构、传输技术和设备配置的理解;③增强选手在实际操作的测量、分析和故障排查能力;④确保选手能够熟练运用各种测量工具和分析软件进视音频指标测量和网络安全数据分析。 阅读建议:由于文档内容详尽且专业性强,建议读者在学习过程结合实际案例和操作练习,同时参考相关技术文献,以便更好地理解和掌握竞赛所需的知识和技能。

22,300

社区成员

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

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