2014-06-24 95 views
0

我有這個查詢在同一個數據庫的多個表上執行,所有數據庫的結構都是相同的。 基本上,查詢找出Table_xxx中列出的代碼,這些代碼不存在於表格「Components」中。從查詢數據的表名中獲取表名的SQL查詢

SELECT DISTINCT a.Code, a.Description, a.Quantity FROM Table_321 AS a 
         WHERE NOT EXISTS (SELECT * FROM Components where Components.Code = a.Code) 
         UNION ALL 
SELECT DISTINCT a.Code, a.Description, a.Quantity FROM Table_333 AS a 
         WHERE NOT EXISTS (SELECT * FROM Components where Components.Code = a.Code) 
         UNION ALL 
         ............. 
         ............. 
         order by Code 

我怎樣才能得到最初包含「代碼,描述和數量」的表名?

回答

1

您可以在下面的格式中的每個選擇查詢添加一個額外的列tableName

SELECT DISTINCT a.Code, a.Description, a.Quantity, 'Table_321' as tableName FROM Table_321 AS a 
         WHERE NOT EXISTS (SELECT * FROM Components where Components.Code = a.Code) 
         UNION ALL 
SELECT DISTINCT a.Code, a.Description, a.Quantity, 'Table_333' as tableName FROM Table_333 AS a 
         WHERE NOT EXISTS (SELECT * FROM Components where Components.Code = a.Code) 
         UNION ALL 
         ............. 
         ............. 
         order by Code 
+0

非常感謝。這十分完美! – Nullbyte

0

減記查詢:

SELECT DISTINCT a.Code, a.Description, a.Quantity,'Table_321' AS tblName FROM Table_321 AS a 
WHERE a.Code NOT IN (SELECT Components.Code FROM Components)