你可以在没有覆盖mysql的情况下结合吗?

时间:2013-02-01 23:40:54

标签: mysql sql

假设我有以下表格:

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

我想执行一个select将表合并到一个表中:

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

输出似乎是第二列中的所有“人物”,并且没有“工作场所”。我做错了什么?

或者在某种程度上我可以做一些事情,比如从单个SELECT语句中获取以下内容:

MyName
A_Person 
B_Person 
C_Person 
D_Person 
E_Person 
A_Workplace
B_Workplace
C_Workplace

注意:我正在使用MySQL Workbench

2 个答案:

答案 0 :(得分:1)

我无法让sqlfiddle接受您的查询,但确实接受了这一点:

SELECT Name, 'Person' FROM tablea
UNION
SELECT Workplace, 'Workplace' FROM tableb

答案 1 :(得分:0)

使用UNION ALL代替UNION

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

UNION删除重复项(在大多数数据库中也会删除结果)。

UNION ALL按所选顺序保留所有行。