0

私のSQLクエリは

SELECT id, content FROM table1
UNION ALL
SELECT p_id, p_content FROM table2;

望ましい結果が得られますが、最初の選択ステートメントの列名があります。

例えば

クエリが 2 番目の select ステートメントからデータを取得する場合、結果は次のようになります。

array (size=2)
  'id' => string '15' (length=2)
  'content' => string 'table2 content' (length=22)

それぞれの選択ステートメントの結果を持つ列名が必要です。

例えば

選択が最初の選択から結果を取得した場合、結果の配列は次のようになります

array (size=2)
  'id' => string '15' (length=2)
  'content' => string 'table1 content' (length=22)

それ以外の場合、選択が2番目の選択ステートメントから結果を取得した場合、結果の配列は次のようになります

array (size=2)
  '**p_id**' => string '15' (length=2)
  '**p_content**' => string 'table2 content' (length=22)
4

1 に答える 1

0

これは不可能です。列名は、クエリ結果全体で同じになります。これらの列名は、実際にはクエリ結果の列名であり、テーブルの列名と同じである必要はありません。

SELECT id as Numbers, content as Texts FROM table1
UNION ALL
SELECT p_id, p_content FROM table2;

2 つの個別のクエリを実行し、それらの結果を個別に処理できます。

または、結果を決定するために追加の定数値を返すこともできます。

SELECT id, content, '1' as TableNr FROM table1
UNION ALL
SELECT p_id, p_content, '2' FROM table2;

これで、各行について、列 'TableNr' の値を問い合わせて、それがどのテーブルから来たかを確認できます。

于 2013-06-22T07:00:39.507 に答える