Jadi inilah yang ingin saya lakukan pada database MySQL saya .
Saya akan melakukan:
SELECT *
FROM itemsOrdered
WHERE purchaseOrder_ID = '@purchaseOrdered_ID'
AND status = 'PENDING'
Jika itu tidak akan mengembalikan baris apa pun, yang dimungkinkan melalui if(dr.HasRows == false)
, sekarang saya akan membuat UPDATE
dalam purchaseOrder
database:
UPDATE purchaseOrder
SET purchaseOrder_status = 'COMPLETED'
WHERE purchaseOrder_ID = '@purchaseOrder_ID'
Bagaimana saya bisa membuat proses ini sedikit lebih pendek?
itemsOrdered_ID
dan memilikipurchaseOrder_ID
nilai berulangpurchaseorder
database pada sisi lain memiliki ID unikpurchaseOrder_ID
Jawaban:
Untuk permintaan spesifik Anda, Anda dapat melakukan:
Namun, saya mungkin menebak bahwa Anda mengulang pada tingkat yang lebih tinggi. Untuk mengatur semua nilai tersebut, coba ini:
sumber
Anda dapat menggunakan
UPDATE
sintaksis multi-tabel untuk menghasilkanANTI-JOIN
antarapurchaseOrder
danitemsOrdered
:sumber
Karena MySQL tidak mendukung
if exists(*Your condition*) (*Write your query*)
, Anda dapat mencapai 'jika klausa' dengan menulis seperti ini:sumber
Anda juga dapat menggunakan kueri berikut untuk memeriksa apakah catatan ada dan kemudian memperbaruinya:
sumber
sumber
SQL
sumber
setelah sql server 2008 menyediakan
Merge
untuk memasukkan, memperbarui, dan menghapus operasi berdasarkan pada pernyataan pertandingan tunggal, juga yang memungkinkan Anda untuk bergabung. contoh contoh di bawah ini mungkin dapat membantu Anda.seperti ini, Anda dapat memasukkan, memperbarui, dan menghapus dalam satu pernyataan.
dan untuk informasi lebih lanjut Anda dapat merujuk dokumen resmi di https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx
sumber
Jika tabel berisi jutaan catatan, maka kueri berikut akan bekerja dengan cepat.
sumber
Anda bisa mendeklarasikan variabel yang menahan jumlah hasil yang dikembalikan pada kueri pemilihan. Anda kemudian dapat menjalankan pernyataan pembaruan jika variabel ini lebih dari 0
sumber