【发布时间】:2014-10-17 14:50:12
【问题描述】:
我想找出数据库(在 SQLServer 中)中所有具有特定值 'SAM' 的列 IDName 的表,例如 IDName='SAM'。所以我最初的方法是创建一个包含所有具有“IDName”列的表的表(因为并非数据库中的所有表都有这个列。然后我想通过每个表来查看哪些表与 IDName=' SAM' - 这就是我卡住的地方。我很确定也有更快的方法可以做到这一点,但我对数据库查询编码不太熟悉。任何事情都会有所帮助谢谢!
select * into tmp from
(
SELECT SO.NAME AS TableName, SC.NAME AS ColumnName
FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id
WHERE sc.name = 'IDName' and SO.type = 'U'
) tablelist
所以如果我去Select * from tmp,我会得到包含“IDName”列的表的列表。现在我必须遍历该列表中的每一个,看看他们是否有“IDName = 'Sam'”,如果他们确实将它添加到输出表中。最后,我想查看数据库中 IDName 为“Sam”的所有表的名称。
【问题讨论】:
-
如果您乐于使用官方未记录的存储过程,您可以使用
sp_MSforeachtable,它可以接受@whereand参数,您可以在其中过滤到仅选定的表。 -
哇,这是一个方便的小存储过程。直到。
-
对不起,我不熟悉 SQL 查询,您将如何编写代码?
-
@civic.sir - 该链接将您带到另一个显示如何使用它的问题/答案。
标签: sql-server database