Anda dapat menggunakan sintaks HAPUS untuk menghapus data dari tabel lebar atau menghapus deret waktu yang memenuhi kondisi tertentu dari tabel deret waktu.
Mesin dan versi yang berlaku
Sintaks HAPUS berlaku untuk LindormTable dan LindormTSDB.
Sintaks HAPUS didukung oleh LindormTSDB 3.4.19 dan versi-versi selanjutnya. Untuk informasi lebih lanjut tentang cara melihat atau meningkatkan versi LindormTSDB, lihat Catatan rilis LindormTSDB dan Tingkatkan versi mesin minor dari instance Lindorm.
Sintaks HAPUS didukung oleh semua versi LindormTable.
Sintaks
delete_statement ::= DELETE FROM table_identifier
WHERE where_clause
where_clause ::= relation ( AND|OR relation )*
relation ::= column_name operator term
| '(' column_name ( ',' column_name )* ')' operator tuple_literal
operator ::= '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | IS NOT? NULL | LIKECatatan penggunaan
Sebelum menggunakan sintaks DELETE untuk menghapus data, perhatikan hal-hal berikut:
Untuk LindormTable:
LindormTable sebelum 2.7.5 hanya mendukung penghapusan satu baris data dengan mengeksekusi pernyataan
DELETE. Anda harus menentukan semua kunci utama dari baris tersebut dalam pernyataan. Jika tidak, kesalahan akan dilaporkan. Mulai LindormTable 2.7.5, Anda dapat menghapus beberapa baris data secara bersamaan. Secara default, fitur penghapusan massal dinonaktifkan. Untuk mengaktifkannya, hubungi dukungan teknis Lindorm. Informasi lebih lanjut tentang cara melihat atau meningkatkan versi LindormTable dapat ditemukan di Catatan rilis LindormTable dan Tingkatkan versi mesin minor dari instance Lindorm.Setelah mengeksekusi pernyataan DELETE, Lindorm menambahkan penanda penghapusan ke data target tanpa memeriksa keberadaan data sebelumnya. Oleh karena itu, operasi penghapusan tetap berhasil meskipun baris target tidak ada.
Ketika mengeksekusi pernyataan
UPSERTuntuk menyisipkan baris data, Anda dapat menggunakan petunjuk untuk menentukan timestamp di masa depan sebagai versi baris. Dalam kasus ini, meskipun pernyataanDELETEberhasil dieksekusi, data tidak akan dihapus. Informasi lebih lanjut tentang versi data dapat ditemukan di Gunakan petunjuk untuk menerapkan versi data.
Untuk LindormTSDB:
Anda hanya dapat menentukan kondisi filter untuk kolom TAG dalam klausa WHERE dari pernyataan
DELETE.Operasi
DELETEhanya dapat menghapus semua data dalam deret waktu yang memenuhi kondisi filter TAG. Operasi ini tidak mendukung penghapusan catatan data tunggal.
Kondisi (where_clause)
Baik LindormTable maupun LindormTSDB mendukung klausa WHERE (where_clause).
LindormTable
LindormTable sebelum 2.7.5: Klausa WHERE harus mencakup kondisi filter setara (column_name=value) untuk semua kolom kunci utama, dan hanya satu baris data yang dapat dihapus.
LindormTable 2.7.5 dan seterusnya, dengan penghapusan massal dinonaktifkan: Klausa WHERE harus mencakup kondisi filter setara (column_name=value) untuk semua kolom kunci utama, dan hanya satu baris data yang dapat dihapus.
LindormTable 2.7.5 dan seterusnya, dengan penghapusan massal diaktifkan: Klausa WHERE mendukung berbagai kondisi filter, mirip dengan klausa WHERE dalam pernyataan
SELECT.PentingKesalahan seperti timeout selama operasi DELETE dapat menyebabkan penghapusan data sebagian.
LindormTSDB
Dalam LindormTSDB, bidang where_clause dalam klausa WHERE harus berupa kolom TAG. Anda dapat menggunakan sintaks DELETE untuk menghapus semua data dari deret waktu yang memenuhi kondisi filter TAG.
Ekspresi relasional (relation)
Ketika menggunakan sintaks DELETE untuk menghapus deret waktu dari tabel deret waktu, bidang column_identifier dalam parameter relation harus berupa kolom VARCHAR (TAG).
Contoh
Buat tabel dan sisipkan data ke dalam tabel. Contoh kode:
-- Buat tabel bernama sensor.
CREATE TABLE sensor (
p1 INTEGER NOT NULL,
p2 INTEGER NOT NULL,
c1 VARCHAR,
c2 VARCHAR,
PRIMARY KEY(p1, p2)
);
-- Sisipkan data ke tabel.
UPSERT INTO sensor(p1, p2, c1, c2) VALUES (1,1,'a','a'),(2,2,'b','b'),(3,3,'c','c');Hapus satu baris data
DELETE FROM sensor WHERE p1 = 1 AND p2 = 1;Verifikasi hasil
Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah dihapus. Keluaran yang diharapkan:
+------+------+------+------+
| p1 | p2 | c1 | c2 |
+------+------+------+------+
| 2 | 2 | b | b |
| 3 | 3 | c | c |
+------+------+------+------+Hapus beberapa baris data secara bersamaan
Fitur ini dalam pratinjau publik. Untuk menggunakannya, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).
DELETE FROM sensor WHERE c1 > 'b' OR p2 > 1;Verifikasi hasil
Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah dihapus.