manipulasi dasar tabel sqlite

0

Saya memiliki dua tabel di .sqlite saya. Kedua tabel ini hampir identik dalam hal struktur / konten dan saya ingin satu kolom dari tabel pertama diganti dengan satu kolom dari tabel kedua.

Inilah yang saya miliki:

meja

Saya ingin:

  • dalam Dokumen, addedharus menjadi oldadded(memiliki cadangan)
  • kemudian mengganti seluruh kolom addeddari Documentsoleh seluruh kolom addeddari doc3sept.

Sejauh ini, saya telah berhasil memilih addeddari doc3septdengan SELECT added FROM doc3sept, tapi saya terjebak dalam menggantikan nilai-nilai lama addeddari Documents.

marlon
sumber

Jawaban:

0

Tidak didukung untuk mengganti nama kolom dalam SQLite - lihat di sini.

Tambahkan oldaddedkolom pertama:

ALTER TABLE Documents ADD COLUMN oldadded int

Untuk memperbarui nilai kolom dari tabel lain yang tidak dapat Anda gunakan UPDATEdalam SQLite. Anda hanya bisa menggunakan INSERT OR REPLACEperintah.

Jadi jalankan selanjutnya:

REPLACE INTO Documents  (id, oldadded)
SELECT id, added FROM Documents
ON CONFLICT REPLACE

Lalu lari:

REPLACE INTO Documents  (id, added)
SELECT id, added FROM doc3sept 
WHERE EXISTS (SELECT * FROM Documents WHERE doc3sept.id=Documents.id)
ON CONFLICT REPLACE

Berhati-hatilah untuk memiliki cadangan sebelum melakukan ini jika ada yang gagal.

Vojtěch Dohnal
sumber