2016-04-22 11 views
1

Geben Sie zwei folgenden TabellenMySQL-Tabellen Vereinigung und neue Spalte

Telefon Tabelle:

PID NAME 
1001 iphone 
1002 samsung 
1003 sony 

pc Tabelle:

CID NAME 
1001 HP 
1002 XPS 

wie kann ich die Ergebnistabelle erhalten?

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

Ich denke, das sollte UNION verwenden, aber wie man mit dem TYPE umgehen?

Antwort

3

Sie sollten UNION ALL verwenden, wenn Sie das Ergebnis auch duplizieren möchten. Andernfalls können Sie mit UNION doppelte Werte eliminieren.

Ihre Anfrage wird so sein,

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

Damit werden alle Datensätze aus beiden Tabellen auswählen.

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

UNION doppelte Datensätze beseitigen. Für z. 1001,1002 wird nur einmal gepflückt. UNION ALL wird den Trick machen. – Priyanshu

0

Verwenden Sie diese Abfrage:

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