0

次のテーブルがあると仮定します。

Name | Occupation
A
B
C
D
E
Workplace | Phone Number
A
B
C

選択を実行して、テーブルを1つのテーブルにマージします。

MyName | Type
A | Person
B | Person
C | Person
D | Person
E | Person
A | Workplace
B | Workplace
C | Workplace

どうすればこれを達成できますか?私は試した:

SET @a = 'Person'
SET @b = 'Name'
SELECT Name, @a FROM tablea
UNION
SELECT Workplace, @b FROM tableb

また、出力は2番目の列にすべて「Person」であるように見え、「Workplace」はありません。私は何が間違っているのですか?

または、単一のSELECTステートメントから次のようなことを行うことができますか?

MyName
A_Person 
B_Person 
C_Person 
D_Person 
E_Person 
A_Workplace
B_Workplace
C_Workplace

注:MySQLWorkbenchを使用しています

4

2 に答える 2

1

sqlfiddleにクエリを受け入れることができませんでしたが、これを受け入れました。

SELECT Name, 'Person' FROM tablea
UNION
SELECT Workplace, 'Workplace' FROM tableb
于 2013-02-01T23:53:16.550 に答える
0

UNION ALLの代わりに使用UNION

SELECT Name, @a FROM tablea
UNION ALL
SELECT Workplace, @b FROM tableb

UNIONは重複を削除します(そしてほとんどのデータベースでは結果もソートします)。

UNION ALLは、選択された順序ですべての行を保持します。

于 2013-02-02T00:05:43.630 に答える