10

69 個のテーブルを持つデータベースがあり、各テーブルの最初の 3 つのレコードのみを選択したいと考えています。

私はテーブルごとにそれを行うことができます:

SELECT TOP 3 * 
  FROM table_schema.table_name

ただし、これを手動で行うとしたら、かなりの時間がかかります。

回避策を提案していただけますか?

このソリューションを試しましたが、動作させることができます (MSSQL 用に変更する方法がわかりません)。

編集返信ありがとうございます。私はおそらく十分に明確ではありませんでした.次のテーブルに進む前に、個々のテーブルを解析し、上位3つのレコードのみを取得したかったのです. 以下のヤロスラフのコードは私が必要としていたものです

DECLARE @sql VARCHAR(MAX)='';
SELECT @sql=@sql+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';'
  FROM sys.tables
EXEC(@sql)
4

2 に答える 2

14

ここにあります:

DECLARE @sql VARCHAR(MAX)='';
SELECT @sql=@sql+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';'
  FROM sys.tables
EXEC(@sql)
于 2012-07-31T13:35:34.970 に答える
8
 exec sp_MSforeachtable 'select top 3 * from ?'
于 2012-07-31T13:35:25.497 に答える