2017-03-03 4 views
0

Ich habe zwei Tabellen A und B Sowohl die Tabelle haben Zeilennummer FeldEinfügen von Zeilennummer ignorieren()

Tabelle A

 
RowNumber Id Name Address 
1   1  ABC  India 
2   2  XYZ  Australia 

Tabelle B

 
RowNumber Id Name Address 
1   3 ABC India 

Ich muss den Wert der Tabelle B am Ende von Tabelle A einfügen. Wie die Tabelle A RowNumb hält er Feld, so dass der Wert der Tabelle B nicht am Ende des Wertes von Tabelle A erscheint, sondern nach der ersten Zeile von Tabelle A. Aber ich brauche den Wert am Ende von Tabelle A. Bitte helfe

+1

Warum behaltst du die RowNumber in einer Spalte? Sie können die Funktion 'ROW_NUMBER' verwenden –

+2

Tabellen repräsentieren * ungeordnete * Mengen. Es gibt kein "Ende der Tabelle A". –

+2

@GordonLinoff Einige würden sagen "das Ende von Tabelle A" passiert, wenn diese Tabelle gelöscht wird :-) –

Antwort

0

Geben Sie ein Extra Spaltenwert nur wegen der Sortierung.

Abfrage

select t.[RowNUmber], t.[Id], [Name], [Address] from(
    select [RowNumber], [Id], [Name], [Address], 0 as [sortby] 
    from [TableA] 
    union all 
    select [RowNumber], [Id], [Name], [Address], 1 as [sortby] 
    from [TableB] 
)t 
order by t.[sortby], t.[RowNumber]; 
+0

Ohne Verwendung von Order by gibt es einen Weg, das zu tun? – user2546461

0

Wenn Sie mit dem ID bestellen, dann werden Sie das erwartete Ergebnis bei der Auswahl bekommen, aber für das Einsetzen müssen Sie RowNumber Spalte als IDENTITY machen, dann wird es nächsten Datensatz einfügen mit `RowNumber 3,4,5 .... so auf

SELECT RowNumber, Id, Name, Address from TableA 
UNION ALL 
SELECT RowNumber, Id, Name, Address from TableB 
ORDER BY ID 

TRY in der folgenden Art und Weise einzusetzen und dem maximalen Wert von TableA geben, so dass ich t erzeugt danach eine Nummer:

INSERT INTO TableA 
SELECT (row_number() OVER (ORDER BY rownumber)+2) AS n, 
    id, 
    name, 
    address 
FROM TableB 
+0

Ich kann diese Spalte nicht als Identität erstellen. Mein Ziel ist es, den Wert mit dem Zeilennummer-Wert einzufügen. Aber ich kann die Order-By-Klausel nicht verwenden. Gibt es irgendeine Möglichkeit, wo der Zeilennummernwert aktualisiert oder ignoriert werden kann? – user2546461

+0

Versuchen Sie das aktualisierte während des Einfügens, wenn Sie es passend gefunden haben. – Susang

+0

Ich habe die folgende Abfrage versucht. INSERT INTO TableA SELECT row_number() OVER (ORDER BY rownumber) 2 n, id, Name, Adresse VON TableB Es gibt mir folgende Fehlermeldung: \t Spaltenname oder Anzahl der übergebenen Werte nicht Übereinstimmungstabelle Definition – user2546461

Verwandte Themen