Saya perlu memeriksa (dari tabel yang sama) jika ada hubungan antara dua peristiwa berdasarkan tanggal-waktu.
Satu set data akan berisi tanggal berakhirnya waktu dari peristiwa tertentu dan set data lainnya akan berisi tanggal tanggal mulai untuk peristiwa lain.
Jika acara pertama selesai sebelum acara kedua maka saya ingin menghubungkan mereka.
Sejauh ini yang saya miliki adalah:
SELECT name as name_A, date-time as end_DTS, id as id_A
FROM tableA WHERE criteria = 1
SELECT name as name_B, date-time as start_DTS, id as id_B
FROM tableA WHERE criteria = 2
Lalu saya bergabung dengan mereka:
SELECT name_A, name_B, id_A, id_B,
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B
Bisakah saya, berdasarkan bidang validation_check saya, menjalankan kueri UPDATE dengan SELECT bersarang?
mysql
select
sql-update
John M
sumber
sumber
Jawaban:
Anda sebenarnya dapat melakukan ini dengan dua cara:
Pembaruan MySQL bergabung dengan sintaks:
Sintaks ANSI SQL:
Pilih salah satu yang paling alami bagi Anda.
sumber
You can't specify target table ___ for update in FROM clause SQL.sql
tableA
=tableB
. Anda terpaksa membuat tabel sementara untuk menyimpan hasil antara. (harus menulis permintaan serupa untuk skrip migrasi)Semoga ini berhasil untuk Anda.
sumber
Mudah di MySQL:
sumber
Jika seseorang berusaha memperbarui data dari satu basis data ke basis data lain, apa pun tabel yang mereka targetkan, pasti ada beberapa kriteria untuk melakukannya.
Yang ini lebih baik dan bersih untuk semua tingkatan:
Traaa! Ini sangat bagus!
Dengan pemahaman di atas, Anda dapat memodifikasi bidang yang ditetapkan dan kriteria "on" untuk melakukan pekerjaan Anda. Anda juga dapat melakukan pemeriksaan, lalu menarik data ke tabel temp (s) dan kemudian menjalankan pembaruan menggunakan sintaksis di atas menggantikan nama tabel dan kolom Anda.
Semoga berhasil, jika tidak beri tahu saya. Saya akan menulis permintaan yang tepat untuk Anda.
sumber
Semoga ini akan membantu Anda dalam kasus di mana Anda harus mencocokkan dan memperbarui antara dua tabel.
sumber
Saya menemukan pertanyaan ini dalam mencari solusi saya sendiri untuk bergabung sangat kompleks. Ini adalah solusi alternatif, untuk versi masalah yang lebih kompleks, yang saya pikir mungkin bermanfaat.
Saya perlu mengisi bidang product_id di tabel aktivitas, di mana aktivitas diberi nomor dalam unit, dan unit diberi nomor dalam level (diidentifikasi menggunakan string ?? N), sehingga orang dapat mengidentifikasi aktivitas menggunakan SKU yaitu L1U1A1. SKU tersebut kemudian disimpan di tabel yang berbeda.
Saya mengidentifikasi hal-hal berikut untuk mendapatkan daftar activity_id vs product_id: -
Saya menemukan bahwa itu terlalu kompleks untuk dimasukkan ke dalam SELECT dalam mysql, jadi saya membuat tabel sementara, dan bergabung dengan pernyataan pembaruan: -
Saya harap seseorang menemukan ini berguna
sumber
sumber
Anda dapat memperbarui nilai dari tabel lain menggunakan gabungan dalam seperti ini
Ikuti di sini untuk mengetahui cara menggunakan kueri ini http://www.voidtricks.com/mysql-inner-join-update/
atau Anda dapat menggunakan pilih sebagai subquery untuk melakukan ini
permintaan dijelaskan secara rinci di sini http://www.voidtricks.com/mysql-update-from-select/
sumber
Kamu bisa menggunakan:
sumber
Untuk meja yang sama,
sumber
Saya punya masalah dengan entri duplikat dalam satu tabel itu sendiri. Di bawah ini adalah pendekatan yang berhasil untuk saya. Itu juga telah diadvokasi oleh @sibaz.
Akhirnya saya menyelesaikannya menggunakan pertanyaan di bawah ini:
Kueri pemilihan disimpan dalam tabel temp
Tabel temp digabungkan dalam kueri pembaruan.
Saya tidak terlalu berpengalaman dengan SQL, mohon saran pendekatan yang lebih baik lho.
Kueri di atas adalah untuk server MySql.
sumber