簡體   English   中英

SQL從任意數量的相同表中選擇記錄

[英]SQL select records from an arbitrary number of identical tables

我試圖查詢具有相同結構和相關名稱的多個表的數據庫(SQLServer),即

[TABLE 01 $TRANSACTIONS]
[TABLE 02 $TRANSACTIONS]
...
[TABLE (n) $TRANSACTIONS]

我有一個查詢,一次一次返回一張表上的所需記錄,並且可以手動選擇多個表

SELECT {QUERY01} FROM [TABLE 01 $TRANSACTIONS]
UNION
SELECT {QUERY02} FROM [TABLE 02 $TRANSACTIONS]
...
SELECT {QUERY(n)} FROM [TABLE (n) $TRANSACTIONS]

我替換所需表名的通用查詢大約有200行,涉及ROWNUMBER()/ PARTITION BY函數,對相關表的多次連接和某些排序。

隨着時間的流逝,將添加新表,並且n將更改。

任何人都可以提出一個方法來從n個任意值的所有n選擇表中的記錄UNION?

注意:通過查詢sysobjects表可以輕松獲得n個表的列表

SELECT Name FROM sysobjects
WHERE Type = 'U'
AND Name LIKE '%$TRANSACTIONS'
ORDER BY Name

AFAIK,最好的選擇是使用sysobjects查詢定期生成新的視圖定義。

您可能能夠創建一個DDL觸發器,該觸發器將運行該過程以在表更改時重新生成此視圖-我真的不知道。 像這樣的DB設計是一個沉船。

您可以通過sysobjects查詢游標並構造sql語句。 然后,您可以調用sp_executesql來運行它。 根據經驗,我可以告訴您,這是調試A $$的痛苦。 我還希望該解決方案在任何供應商升級時都會崩潰。 祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM