Lebih
MySQL UPDATE query berdasarkan Query SELECT
Saya perlu memeriksa (dari tabel yang sama) jika ada asosiasi antara dua peristiwa berdasarkan tanggal-waktu.
Satu set data akan berisi berakhir pada tanggal-waktu dari peristiwa-peristiwa tertentu dan lain set data akan berisi tanggal mulai-waktu untuk acara-acara lainnya.
Jika acara pertama selesai sebelum acara kedua maka saya ingin menghubungkan mereka.
Apa yang saya miliki sejauh ini 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
Kemudian 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
Dapat saya kemudian, berdasarkan validation_check lapangan, menjalankan UPDATE query dengan MEMILIH bersarang?
461
12
Anda dapat benar-benar melakukan ini salah satu dari dua cara:
MySQL update bergabung dengan sintaks:
ANSI SQL sintaks:
Memilih mana yang tampaknya paling alami untuk anda.
Harapan ini bekerja untuk anda.
Mudah di MySQL:
Jika seseorang berusaha untuk meng-update data dari satu database ke yang lain tidak peduli meja yang mereka targetkan, harus ada beberapa kriteria untuk melakukannya.
Yang satu ini adalah yang lebih baik dan bersih untuk semua tingkatan:
Traaa! Ia bekerja besar!
Dengan pengertian di atas, anda dapat memodifikasi mengatur bidang dan "on" kriteria untuk melakukan pekerjaan anda. Anda juga dapat melakukan pemeriksaan, kemudian menarik data ke dalam tabel temp(s) dan kemudian menjalankan pembaruan menggunakan sintaks di atas mengganti tabel dan nama kolom.
Harapan itu bekerja, jika tidak biarkan aku tahu. Saya akan menulis yang tepat query untuk anda.
Berharap ini akan membantu anda dalam kasus di mana anda harus mencocokkan dan update antara dua tabel.
Saya menemukan pertanyaan ini dalam mencari sendiri solusi yang sangat kompleks bergabung. Ini adalah sebuah alternatif solusi, untuk versi yang lebih kompleks dari masalah, yang saya pikir mungkin berguna.
Aku yang dibutuhkan untuk mengisi product_id lapangan dalam kegiatan tabel, di mana kegiatan berjumlah satu unit, dan unit bernomor di tingkat (diidentifikasi dengan menggunakan string ??N), seperti yang satu dapat mengidentifikasi kegiatan yang menggunakan SKU yaitu L1U1A1. Mereka Sku kemudian disimpan dalam tabel yang berbeda.
Aku diidentifikasi berikut untuk mendapatkan daftar activity_id vs product_id:-
Saya menemukan bahwa itu terlalu kompleks untuk memasukkan ke PILIH dalam mysql, jadi saya membuat sebuah tabel sementara, dan bergabung dengan pernyataan update:-
Saya berharap seseorang menemukan ini berguna
Anda dapat memperbarui nilai-nilai dari tabel lain menggunakan inner join sama
Ikuti di sini untuk tahu bagaimana menggunakan query ini http://www.voidtricks.com/mysql-inner-join-update/
atau anda dapat menggunakan pilih sebagai subquery untuk melakukan hal ini
query dijelaskan secara detail di sini http://www.voidtricks.com/mysql-update-from-select/
Anda dapat menggunakan:
Untuk meja yang sama,
Aku punya masalah dengan entri duplikat dalam satu tabel itu sendiri. Di bawah ini adalah pendekatan yang bekerja untuk saya. Hal ini juga telah dianjurkan oleh @sibaz.
Akhirnya aku diselesaikan dengan menggunakan pertanyaan di bawah ini:
JIKA OBJECT_ID(N'code..#New_format_donor_temp', N'U') ADALAH TIDAK NOL DROP TABLE #New_format_donor_temp;
pilih * ke #New_format_donor_temp dari DONOR_EMPLOYMENTS di mana DONOR_ID DI ( 1, 2 )
UPDATE de SET STATUS_CD=de_new.STATUS_CD, STATUS_REASON_CD=de_new.STATUS_REASON_CD, TYPE_CD=de_new.TYPE_CD DARI DONOR_EMPLOYMENTS SEBAGAI de INNER JOIN #New_format_donor_temp SEBAGAI de_new PADA de_new.EMP_NO = de.EMP_NO MANA de.DONOR_ID DI ( 3, 4 )
Aku tidak berpengalaman dengan SQL mohon saran apapun pendekatan yang lebih baik, anda tahu.
Di atas query pada MySql server.
Periksa dengan query di bawah ini.
update tableA Yang inner join tableB B on A. name_a = B. name_b set validation_check = if(start_dts > end_dts, 'yang masih BERLAKU', '')