2016-04-22 89 views
1

举两个在下表中,MySQL表联盟和新列

电话表:

PID NAME 
1001 iphone 
1002 samsung 
1003 sony 

PC表:

CID NAME 
1001 HP 
1002 XPS 

我怎样才能得到结果表?

DID TYPE NAME 
1001 PHONE iphone 
1002 PHONE samsung 
1003 PHONE sony 
1001 PC HP 
1002 PC XPS 

我认为这应该使用UNION,但如何处理TYPE?

回答

3

如果你想重复结果,你应该使用UNION ALL,否则你可以使用UNION消除重复的值。

您的查询会是这样,

select pid as DID,'PHONE' as TYPE,name from phone 
UNION all 
select CID as DID,'PC' as TYPE,name from PC; 

这两个表中选择所有记录。

1
SELECT PID AS DID, 'PHONE' AS TYPE, NAME FROM Phone 
UNION ALL 
SELECT CID AS DID, 'PC' AS TYPE, NAME FROM PC; 
+1

联盟将消除重复记录。 例如。 1001,1002只会被挑选一次。 联盟所有将做的伎俩。 – Priyanshu

0

使用此查询:

select pid as DID,'PHONE' as TYPE, name from phone 
UNION 
select cid as DID,'PC' as TYPE, name from PC;