10 Stimmen

Wie kann ich die Anzahl der Zeilen bei einem DELETE mit DB2 begrenzen?

Ich möchte eine Sicherheit für eine sensible Tabelle hinzufügen, wenn ich Zeilen mit einer SQL-Anfrage in einer DB2-Tabelle lösche.

Ich möchte die Art und Weise nachahmen, in der MySQL es erlaubt, die Anzahl der in einer SQL-Anfrage gelöschten Zeilen zu begrenzen.

Im Grunde möchte ich dies mit DB2 tun:

DELETE FROM table WHERE info = '1' LIMIT 1

Gibt es eine Möglichkeit, dies mit DB2 zu tun?

0voto

minervino Punkte 1
MERGE INTO XYZ A<BR>
USING (<BR>
SELECT RID_BIT(B) CHAVE<BR>
FROM XYZ B<BR>
FETCH FIRST 100000 ROWS ONLY) B<BR>
ON RID_BIT(A) = B.CHAVE<BR>
WHEN MATCHED THEN DELETE;

-1voto

elcool Punkte 5781
DELETE FROM table
WHERE info = '1'
FETCH FIRST 1 ROWS ONLY

-1voto

Panadol Chong Punkte 1479

Wählen Sie einfach eine Anweisung aus, und fügen Sie die Anweisung in die Löschabfrage ein:

delete from (
select from table WHERE info = '1' order by id fetch first 25000 rows only
)

-1voto

Juan Acisa Punkte 1
DELETE                                      
FROM Bibl/File                             
WHERE RRN(File) =  (                        
                    SELECT min(RRN(File))   
                    FROM Bibl/File         
                    WHERE Fld1 = 'xx'     
                   )   

Die RRN-Funktion gilt nur für AS400/iSeries/PowerSystem. In anderen Umgebungen gibt es andere Funktionen für die relative Datensatznummer.

Damit ist es möglich, einen Datensatz von mehreren identischen auch ohne UNIQUE-Schlüssel zu löschen. Es kann auch zur Aktualisierung mit kleinen Änderungen verwendet werden.

funktioniert wie LIMIT, aber mit DELETE und / oder UPDATE.

Es funktioniert nur auf SQL DB2 in anderen Einstellungen sollte durch RRN-Funktion geändert werden, um die Spaltennummer zurückzugeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X