2016-07-19 16 views
1

sie ausführen sagen wir Tabelle haben, wie unten:korrekte Art und Weise Sql Selbst Vereinigung

table1: 

**t1** **t2** **t3** 
abc  xyz  aaa 

kann ich tun, so etwas wie:

select * from(
(select t.t1,t.t2,t.t3 from table1 t) as tmp 
union 
(select tmp2.t1,'someothervalue' as t2,tmp2.t3 from tmp tmp2)) as result 
order by result.t1 

Grundsätzlich Vereinigungsoperation mit der ersten tmp Tabelle selbst. Angenommen, t1, t2, t3 sind alle vom Typ varchar.

+0

Ja, Union so lange arbeiten verwenden könnte, da die Typen ausgewählt werden, sind implizit miteinander kompatibel. Wenn Sie beispielsweise eine Verbindung zwischen bigint und varchar versuchen, erhalten Sie einen Fehler. – M22an

Antwort

1

from tmp tmp2 ist nicht möglich, statt dessen Sie from table1 tmp2, aktualisiert SQL-Abfrage

SELECT * FROM(
    SELECT t.t1,t.t2,t.t3 FROM table1 t 
UNION 
    SELECT tmp2.t1,'someothervalue' as t2,tmp2.t3 FROM table1 tmp2 
) as result 
ORDER BY result.t1 
+0

-Wenn Sie annehmen, in Ihrer Abfrage ist 't' das Ergebnis von einigen komplexen Joins, in diesem Fall was könnte getan werden? –

+0

Funktioniert nicht so. Gibt einen Fehler. Versuch es. –

+0

Es ist der in der Frage :) Kann meine Abfrage hier nicht posten. Aber das Szenario ist das gleiche. –

Verwandte Themen