2017-06-20 69 views
0

具體的數據與此查詢,我得到一個包含名爲「STATUS_ID」列表,其中包含

SELECT 
    c.name AS 'ColumnName' 
    ,t.name AS 'TableName' 
FROM sys.columns c 
    JOIN sys.tables t ON c.object_id = t.object_id 
WHERE c.name LIKE 'Status_ID' 

數據在Status_ID可能只值列中的所有表從1到6 我想要得到所有表的列表,其中Status_ID = 2至少一次。 (排除從上面的代碼中的所有表,不與Status_ID = 2包含數據)

+0

您可以使用動態SQL和查詢數據從你找到第一個查詢的表 –

回答

0

解決方案1: 運行下面的查詢,這將給你用含有STATUS_ID列中的所有表選擇查詢。然後複製並執行選擇查詢以查找數據。

SELECT 'select * from ' + TABLE_NAME + ' where Status_ID = ''2''' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'Status_ID' 

解決方案2: 您可能需要使用以下解決方案找到所有表中的數據 Find a string by searching all tables in SQL Server Management Studio 2008

0

這應該做的伎倆:

DECLARE @sql NVARCHAR(MAX) = 'DECLARE @tables NVARCHAR(MAX) = '''' ;' ; 
DECLARE @tables NVARCHAR(MAX) = ''; 
SELECT @SQL += 'IF EXISTS (SELECT ''X'' FROM ' + QUOTENAME(t.name) 
     + 'WHERE STATUS_ID =2) SET @tables+= ' + '''' + + ',' + 
QUOTENAME(t.name) + '''' 
     + ';' 
FROM  sys.columns c 
     JOIN sys.tables t ON c.object_id = t.object_id 
WHERE c.name LIKE 'STATUS_ID' 


SET @sql += 'SELECT SUBSTRING(@TABLES,2,LEN(@TABLES));' 
EXEC(@SQL);