2017-04-07 5 views
0

Ich wollte zuerst n Zeilen oder letzte n Zeilen aus einer Tabelle in Teradata löschen. Aber ich bekomme keine korrekte Abfrage dafür. Kann mir bitte jemand sagen wie ich das machen kann?Teradata: Löschen n Zeilen aus einer Tabelle

+1

Definieren * erste n Zeilen *. Es gibt keine * erste * oder * letzte * Zeile in einer Tabelle, es ist eine ungeordnete Reihe von Zeilen :-) – dnoeth

+0

Ich meine, keine Zeilen von Anfang oder Ende zu sagen. –

+1

Wie definieren Sie * Anfang oder Letzte *? – dnoeth

Antwort

0

Ich habe keine Erfahrung mit Teradata arbeiten, aber wenn ich mit SQL arbeite ich werde es so machen:

Delete From |TableName| where |the ID column Name| 
IN (Select top(n) |the ID column Name| from |TableName|) 

So zum Beispiel, wenn ich einen Kunden Tabelle haben und diese Tabelle enthält eine CustomerID als Primärschlüsselspalte und Kundenname, und ich möchte den ersten 10 Zeilen löschen i so sein würde:

Delete From Customer where CustomerID 
IN (Select top(10) CustomerID from Customer) 

ich hoffe, dass es

+0

Ohne ORDER BY für CustomerID gibt TOP Zeilen von der AMP zurück, die zuerst beendet wird. Dies bedeutet jedes Mal, wenn die Abfrage ausgeführt wird, ein zufälliges Ergebnis. Dies kann unerwünschte Folgen haben, wenn es in einer Produktionsumgebung blind läuft. –

+0

Die obige Abfrage hat nicht funktioniert und es wird ein Fehler angezeigt: Top N wird in der Unterabfrage nicht unterstützt –

0

Top N in su helfen bselect ist in delete eingeschränkt, nicht in anderem Kontext.

eine flüchtige Tabelle statt subselect erstellen So

create volatile table myDel as ( 
    select id from myTable 
    sample .25 
) with data on commit preserve rows; 
delete T 
from myTable T, myDel D 
where T.id = D.id; 

25% der Daten löschen (BTW, Probe viele Möglichkeiten hat, wie das Beispiel erstellen)

mit flüchtigem Tisch und oben n, und einige Bestellkriterien können Sie klar definieren, was oben/zuletzt ist.

create volatile table myDel as ( 
    select top 3 id from myTable order by col_1 
) with data on commit preserve rows; 
Verwandte Themen