Rumah  >  Artikel  >  pangkalan data  >  Bolehkah anda menggabungkan operasi MySQL UPDATE dan SELECT ke dalam satu permintaan untuk \"memiliki\" baris dan mendapatkan semula parameternya?

Bolehkah anda menggabungkan operasi MySQL UPDATE dan SELECT ke dalam satu permintaan untuk \"memiliki\" baris dan mendapatkan semula parameternya?

Susan Sarandon
Susan Sarandonasal
2024-11-03 05:10:31868semak imbas

Can you combine MySQL UPDATE and SELECT operations into one request to

KEMASKINI DAN PILIH MySQL dalam Satu Permintaan

Banyak aplikasi pekerja melaksanakan tugas dalam gelung dengan mengakses jadual tugas dalam pangkalan data MySQL menggunakan API C asli MySQL. Untuk memiliki tugas, aplikasi:

  1. Menghasilkan ID unik di peringkat global.
  2. Melaksanakan pertanyaan KEMASKINI untuk menetapkan medan panduan kepada ID yang dijana untuk baris dengan panduan 0 .
  3. Melaksanakan pertanyaan SELECT untuk mendapatkan semula parameter tugas berdasarkan panduan.

Adakah terdapat cara untuk menggabungkan langkah-langkah ini ke dalam satu panggilan ke pelayan, dengan berkesan " memiliki" baris dan mendapatkan parameternya dalam satu operasi?

Jawapan:

Ya, adalah mungkin untuk mencapai ini menggunakan pertanyaan KEMASKINI dengan subkueri:

UPDATE tasks
SET guid = (
    SELECT id
    FROM tasks
    ORDER BY id DESC
    LIMIT 1
)
WHERE guid = 0
RETURNING guid, params;

Pertanyaan ini mengemas kini medan panduan baris dengan panduan 0 menggunakan id tertinggi daripada jadual tugasan sebagai panduan baharu. Ia juga mengembalikan panduan yang dikemas kini dan parameter tugasan dalam satu baris.

Atas ialah kandungan terperinci Bolehkah anda menggabungkan operasi MySQL UPDATE dan SELECT ke dalam satu permintaan untuk \"memiliki\" baris dan mendapatkan semula parameternya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn