-5

2 つのテーブルの結合を取りたい。どちらも列の数が等しくなく、一部は共通しており、一部は共通していません。

個々の列名を使用せずにそれらを結合するにはどうすればよいですか (間にダミー列を挿入します)。

いくつかのテーブルの結合をクエリして取得する必要があり、同じテーブルに対して異なる列名を持つ異なるデータベースでテストします。したがって、個々の列名をアドレス指定し、ダミー列を挿入してユニオンを取得する一般的な方法を使用できませんでした。

ありがとう、ゴクル。

4

2 に答える 2

3

個々の列名を使用せずにそれらを結合するにはどうすればよいですか

できません。

UNION を使用する場合、列の数と型が一致している必要があります。

于 2012-06-28T19:29:43.343 に答える
2

問題の 2 つ (またはそれ以上) のテーブルをSELECT...UNION...SELECT調べて、適切なステートメントを合成できます。INFORMATION_SCHEMA.COLUMNS列を用意して、共通の列のみを含めるように SQL を作成できます。

T-SQL の使用:

SELECT  COLUMN_NAME
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = 'FirstTable'
UNION
SELECT  COLUMN_NAME
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = 'SecondTable'

例として C# を使用してロジックを説明します。

List<string> sharedColumnNames = CallTheAforementionedSql();
string unionStatement = string.Format(
  "SELECT [{0}] FROM FirstTable UNION SELECT [{0}] FROM SecondTable",
  string.Join("],[", shareColumnNames.ToArray())
);

var stuff = ExecuteSql(unionStatement);
于 2012-06-28T19:31:32.987 に答える