Sqlite
SQLite3:刪除重複項
給定下表
CREATE TABLE `sms` ( `_id` INTEGER, `thread_id` INTEGER, `address` TEXT, `person` INTEGER, `date` INTEGER, `protocol` INTEGER, `read` INTEGER DEFAULT 0, `status` INTEGER DEFAULT -1, `type` INTEGER, `reply_path_present` INTEGER, `subject` TEXT, `body` TEXT, `service_center` TEXT, PRIMARY KEY(_id) );
我想刪除所有相同的
address
行body
。換句話說,根據address
和消除重複body
,只留下第一次出現。
如果您只是想區分具有相似內容的兩行,可以使用 SQLite3 中的ROWID功能,它有助於唯一標識表中的每一行。
像這樣的東西:
DELETE FROM sms WHERE rowid NOT IN (SELECT min(rowid) FROM sms GROUP BY address, body);
應該可以為您提供具有最小 rowid 的行,這將是該行在表中的第一次出現。
但是,請務必在事務中執行它,以確保它完全符合您的要求,當然,請事先進行備份。=)