我想在一个表中组合两个table2。
我曾尝试在MySQL中使用union,但它没有成功。
我的编码:
Select id,name;
union all
select id, name,sex;
示例数据:
TABLE_1
ID, Name
--------
1 JJ
3 PP
表2
ID, Name, Sex
-------------
33 A M
22 B F
我需要的结果应该是:
ID, Name, Sex,
1 JJ
3 PP
33 A M
22 B F
我们可以在mysql存储过程中这样做吗?
答案 0 :(得分:0)
与UNION [ALL]
组合的两个结果集的列数及其类型应相同。这就是说试试
SELECT id, name, NULL sex
FROM Table1
UNION ALL
SELECT id, name, sex
FROM Table2
输出:
| ID | NAME | SEX | ---------------------- | 1 | JJ | (null) | | 3 | PP | (null) | | 33 | A | M | | 22 | B | F |
这是 SQLFiddle 演示
进一步阅读
我们可以在mysql存储过程中执行此操作吗?
是的,如果必须,你可以。
答案 1 :(得分:0)
在sql语句中使用'UNION'运算符时,两个组合表(结果集)必须具有相同的列数和类型。否则语句将失败,因为服务器无法决定如何组合这两个表。 因此,您需要人工为frist表创建第三列,以便其列集与第二个表中的列相匹配:
SELECT id,name,'' AS sex FROM Table_1 UNION SELECT id, name, sex FROM Table_2