MySQL yangilash sintaksisi. Ma'lumotlarni yangilash uchun SQL so'rovlari (UPDATE)

Agar MySQL-da ma'lumotlarni o'zgartirish yoki yangilash kerak bo'lsa, ishlash uchun SQL UPDATE buyrug'idan foydalanishimiz mumkin. ,

grammatika

Quyida MySQL Sheet Data General SQL sintaksisini o'zgartirish uchun UPDATE buyrug'i keltirilgan:

YANGILANISh jadval_nomi SET maydoni1=yangi qiymat1, maydon2=yangi qiymat2

  • Siz bir vaqtning o'zida bir yoki bir nechta maydonlarni yangilashingiz mumkin.
  • WHERE bandida istalgan shartni belgilashingiz mumkin.
  • Shuningdek, ma'lumotlarni alohida jadvalda yangilashingiz mumkin.

Jadvalning qatorlarida berilgan ma'lumotlarni yangilash kerak bo'lganda, INEKE juda foydali.

Ma'lumotlarni yangilash uchun buyruq qatori

Quyida biz UPDATE INEKE SQL buyrug'i yordamida ma'lumotlar jadvalida ko'rsatilgan w3big_tbl ni yangilaymiz:

misollar

Quyidagi misol ma'lumotlar jadvalini w3big_title w3big_id maydoni qiymati 3 sifatida yangilaydi:

# mysql -u root -p paroli; Parolni kiriting:******** mysql> w3big dan foydalaning; Ma'lumotlar bazasi o'zgartirildi mysql> YANGILANISH w3big_tbl -> SET w3big_title="(!LANG: JAVA-ni o'rganish" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

Ma'lumotlarni yangilash uchun PHP skriptidan foydalaning

SQL iboralarini bajarish uchun mysql_query () dan foydalanish uchun PHP funktsiyasi, siz SQL UPDATE bayonotidan foydalanishingiz mumkin yoki INEKE qo'llanilmaydi.

MySQL> buyruq qatoridagi bu funksiya SQL iboralarini bajarish effekti bir xil.

misollar

Quyidagi misol w3big_id maydoni w3big_title 3 ma'lumotlarini yangilaydi.



Maqolaning mazmuni
1. Eng oddiy MySQL so'rovlari
2. Oddiy SELECT so'rovlari
3. Oddiy INSERT (yangi yozuv) so'rovlari
4. Oddiy UPDATE (ustiga yozish, qo'shish) so'rovlari
5. Oddiy DELETE (yozuvni o'chirish) so'rovlari
6. Oddiy DROP (jadvalni o'chirish) so'rovlari
7. Murakkab MySQL so'rovlari
8. MySQL so'rovlari va PHP o'zgaruvchilari

1. Eng oddiy SQL so'rovlari

1. BARCHA ma'lumotlar bazalarini sanab o'tadi.

SHOW ma'lumotlar bazalarini;
2. Baza_nomi bazasidagi BARCHA jadvallarni sanab o'tadi.

base_nameda jadvallarni KO'RSATISH;

2. MySQL ma'lumotlar bazasiga oddiy SELECT (tanlash) so'rovlari

TANLASH- ma'lumotlar bazasidan allaqachon mavjud ma'lumotlarni tanlaydigan so'rov. Tanlash uchun ma'lum tanlov variantlarini belgilashingiz mumkin. Masalan, rus tilidagi so'rovning mohiyati shunday yangraydi - falon ustunning parametri qiymatga teng bo'lgan falon jadvaldan falon ustunlarni TANGLASH.

1. tbl_name jadvalidagi HAMMA ma'lumotlarni tanlaydi.

TANGLASH * FROM tbl_name;
2. tbl_name jadvalidagi yozuvlar sonini ko'rsatadi.

tbl_name dan (*) sonni tanlang;
3. (FROM) jadvali tbl_name limiti (LIMIT) 2 dan boshlab 3 ta yozuvdan (SELECT) tanlaydi.

SELECT * FROM tbl_name LIMIT 2,3;
4. (FROM) tbl_name jadvalidan BARCHA (*) yozuvlarni tanlaydi (TANILADI) va ularni (ORDER BY) id maydoni bo‘yicha tartib bilan tartiblaydi.

SELECT * FROM tbl_name ORDER BY ID;
5. (FROM) tbl_name jadvalidan BARCHA yozuvlarni tanlaydi (TANILADI) va ularni (TARTIB BY) id maydoniga teskari tartibda tartiblaydi.

SELECT * FROM tbl_name ORDER BY ID DESC;
6. Tanlaydi ( TANLASH) dan barcha (*) yozuvlar (( FROM) jadvallar foydalanuvchilar va ularni tartiblash ( Buyurtma berish) maydonda id o'sish tartibida chegara ( LIMIT) dastlabki 5 ta yozuv.

FOYDALANUVCHILARDAN * TANLASH Id LIMIT BO'YICHA BUYURTDI;
7. Jadvaldan barcha yozuvlarni tanlaydi foydalanuvchilar, maydon qaerda fname qiymatiga mos keladi Gena.

QAYERDA foydalanuvchilar FROM * Fname="Gena";
8. Jadvaldan barcha yozuvlarni tanlaydi foydalanuvchilar, bu erda maydon qiymati fname bilan boshlang Ge.

Fname * "Ge%" QAYERDAGI foydalanuvchilar TARAFIDAN TANLANG;
9. Jadvaldan barcha yozuvlarni tanlaydi foydalanuvchilar, qayerda fname bilan tugaydi na, va yozuvlarni qiymatning o'sish tartibida tartiblaydi id.

Fname * "%na" YO'Q FOYDALANICILARDAN TANLANG.
10. Ustunlardan barcha ma'lumotlarni tanlaydi fname, l nomi stoldan foydalanuvchilar.

Fname, lname FROM foydalanuvchilar;

11. Aytaylik, sizning foydalanuvchi ma'lumotlar jadvalida mamlakatingiz bor. Shunday qilib, agar siz FAQAT paydo bo'lgan qiymatlar ro'yxatini ko'rsatishni istasangiz (masalan, Rossiya 20 marta emas, faqat bittasi ko'rsatilishi uchun), DISTINCT-dan foydalaning. Bu Rossiya, Ukraina, Belorussiyaning takrorlanadigan qadriyatlaridan kelib chiqadi. Shunday qilib, stoldan foydalanuvchilar ustunlar mamlakat HAMMA UNIKAL qiymatlar ko'rsatiladi

foydalanuvchilar DISTINCT mamlakatni tanlang;
12. Jadvaldan HAMMA qator ma'lumotlarini tanlaydi foydalanuvchilar qayerda yoshi 18,19 va 21 qiymatlariga ega.

TANLASH * FROM foydalanuvchilar FROM yoshi IN (18,19,21);
13. MAKSIMUM qiymatni tanlaydi yoshi jadvalda foydalanuvchilar. Ya'ni, agar siz jadvaldagi eng yuqori qiymatga ega bo'lsangiz yoshi(ingliz tilidan) 55, keyin so'rov natijasi 55 bo'ladi.

Foydalanuvchilardan maksimal (yosh) NI TANLASH;
14. Jadvaldan ma'lumotlarni tanlang foydalanuvchilar maydonlar bo'yicha nomi va yoshi QAYERDA yoshi eng kichik qiymatni oladi.

TANLASH nomi, min(yoshi) FROM foydalanuvchilar;
15. Jadvaldan ma'lumotlarni tanlang foydalanuvchilar maydonda nomi QAYERDA id 2 GA TENG EMAS.

FOYDALANUVCHILARDAN ismni TANLASH QAYER id!="2";

3. Oddiy INSERT (yangi yozuv) so'rovlari

KIRITMOQ– maʼlumotlar bazasiga DASHLAB yozuvni kiritish imkonini beruvchi soʻrov. Ya'ni, ma'lumotlar bazasida YANGI yozuv (chiziq) hosil qiladi.

1. Jadvalga yangi yozuv kiritadi foydalanuvchilar, dalada nomi qo'shadi Sergey va dalada yoshi qo'shimchalar 25. Shunday qilib, jadvalga berilgan qiymatlar bilan yangi qator qo'shiladi. Agar ko'proq ustunlar bo'lsa, qolganlari bo'sh qoladi yoki standart qiymatlar bilan qoladi.

INSERT INTO foydalanuvchilar (ismi, yoshi) VALUES ("Sergey", "25");

4. MySQL ma'lumotlar bazasiga nisbatan oddiy UPDATE so'rovlari

YANGILANISH- ma'lumotlar bazasidagi mavjud satrga maydon qiymatlarini USTIRISh yoki biror narsa qo'shish imkonini beruvchi so'rov. Masalan, tayyor satr bor, lekin vaqt o'tishi bilan u o'zgarganligi sababli, unda yosh parametrini qayta yozish kerak.

1. Jadval foydalanuvchilar yoshi 18 ga aylanadi.

YANGILANISh foydalanuvchilar SET yoshi = "18" WHERE id = "3";
2. Hammasi birinchi so'rovda bo'lgani kabi, u faqat so'rovning sintaksisini ko'rsatadi, bu erda ikki yoki undan ortiq maydonlar ustiga yoziladi.
Jadval foydalanuvchilar WHERE id - 3-maydon qiymati yoshi 18 va bo'ladi mamlakat Rossiya.

YANGILANISh foydalanuvchilari SET yoshi = "18", mamlakat = "Rossiya" WHERE id = "3";

5. MySQL ma'lumotlar bazasiga nisbatan oddiy DELETE (yozuvni o'chirish) so'rovlari

OʻCHIRISH jadvaldan qatorni olib tashlaydigan so'rovdir.

1. Jadvaldan qatorni olib tashlaydi foydalanuvchilar QAYERDA id 10 ga teng.

ID = "10" QERDAGI foydalanuvchilardan O'CHIRING;

6. MySQL ma'lumotlar bazasiga oddiy DROP (jadvalni o'chirish) so'rovlari

DOPLASH jadvalni o'chiradigan so'rovdir.

1. Butun jadvalni o'chiradi tbl_name.

DROP TABLE tbl_name;

7. MySQL ma'lumotlar bazasining murakkab so'rovlari

Hatto tajribali foydalanuvchilar ham foydalanishi mumkin bo'lgan qiziqarli so'rovlar

foydalanuvchilar, adminlardan identifikator, ism, mamlakatni TANLASH QAYERDA TO_DAYS(HOZIR()) - TO_DAYS(roʻyxatdan oʻtish_sanasi)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Ushbu murakkab so'rov ustunlarni tanlaydi ID, ism, mamlakat JADVALLARDA foydalanuvchilar, adminlar QAYERDA ro'yxatga olish_sanasi(sana) dan katta emas 14 kunlar va faollashtirish TENG EMAS 0 , Saralash turi ro'yxatga olish_sanasi teskari tartibda (boshida yangi).

UPDATE users SET age = "18+" WHERE age = (FROM foydalanuvchilar yoshini TANGLASH QAYERDA erkak = "erkak");
Yuqorida aytilganlarga misol bo'ladi so'rovda so'rov SQL da. Foydalanuvchilar yoshini 18+ qilib yangilang, bunda jinsi erkak. Men bunday so'rovni tavsiya qilmayman. Shaxsiy tajribamdan shuni aytamanki, bir nechta alohidalarini yaratish yaxshiroq - ular tezroq ishlab chiqiladi.

8. MySQL va PHP ma'lumotlar bazasi so'rovlari

PHP sahifasidagi MySQL so'rovlarida siz o'zgaruvchilarni taqqoslash qiymatlari va boshqalar sifatida kiritishingiz mumkin. Bir-ikki misol

1. Jadvaldan barcha yozuvlarni tanlaydi foydalanuvchilar, maydon qaerda fname o'zgaruvchining qiymatiga mos keladi $name.

QAYERDA foydalanuvchilar FROM * Fname="$name";
2. Jadval foydalanuvchilar WHERE id - 3-maydon qiymati yoshi$age o'zgaruvchisi qiymatining o'zgarishi.

YANGILANISh foydalanuvchilar SET age = "$age" WHERE id = "3";

Diqqat! Agar sizni boshqa misol qiziqtirsa, izohlarda savol yozing!

YANGILANISh tbl_name SET col_name1=expr1 [, col_name2=expr2, ...]

UPDATE bayonoti ustunlarni mavjud jadval satrlaridagi yangi qiymatlari bilan yangilaydi. SET bayonoti qaysi ustunlar o'zgartirilishi va ularda qanday qiymatlar o'rnatilishi kerakligini belgilaydi. WHERE bandi, agar mavjud bo'lsa, qaysi qatorlarni yangilash kerakligini belgilaydi. Aks holda, barcha qatorlar yangilanadi. Agar ORDER BY bandi ko'rsatilgan bo'lsa, qatorlar unda ko'rsatilgan tartibda yangilanadi.

Agar LOW_PRIORITY kalit so'zi belgilangan bo'lsa, ushbu UPDATE buyrug'ining bajarilishi boshqa mijozlar ushbu jadvalni o'qishni tugatmaguncha kechiktiriladi.

Agar IGNORE kalit so'zi ko'rsatilgan bo'lsa, yangilanish tugmachaning takroriy xatosiga duch kelgan taqdirda ham yangilash buyrug'i to'xtatilmaydi. Mojarolarni keltirib chiqaradigan qatorlar yangilanmaydi.

Agar ko'rsatilgan ifoda ustuniga tbl_name argumenti orqali kirish mumkin bo'lsa, UPDATE buyrug'i ushbu ustun uchun joriy qiymatidan foydalanadi. Masalan, quyidagi buyruq yosh ustunini joriy qiymatdan bir kattaroq qiymatga o'rnatadi:

mysql> Shaxs ma'lumotlarini YANGILASH SET yoshi=yosh+1;

UPDATE buyrug'i qiymatlarni chapdan o'ngga belgilaydi. Masalan, quyidagi buyruq yosh ustunini takrorlaydi, keyin esa uni oshiradi:

mysql> Shaxs ma'lumotlarini yangilash SET yoshi=yosh*2, yosh=yosh+1;

Agar ustun joriy qiymatga o'rnatilgan bo'lsa, MySQL buni sezadi va uni yangilamaydi.

UPDATE buyrug'i haqiqatda o'zgartirilgan qatorlar sonini qaytaradi. MySQL 3.22 va undan keyingi versiyalarida mysql_info() C API funksiyasi topilgan va yangilangan qatorlar sonini hamda UPDATE bajarilganda paydo bo‘lgan ogohlantirishlar sonini qaytaradi.

MySQL 3.23 versiyasida LIMIT # dan faqat ma'lum qatorlar soni o'zgartirilganligiga ishonch hosil qilish uchun foydalanish mumkin.

Ushbu MySQL qo'llanmasi MySQL-dan qanday foydalanishni tushuntiradi UPDATE bayonoti sintaksis va misollar bilan.

Sintaksis

Eng oddiy shaklda MySQL-da bitta jadvalni yangilashda UPDATE bayonoti sintaksisi:

YANGILANISh jadvali SET ustun1 = ifoda1, ustun2 = ifoda2, ... ;

Biroq, bitta jadvalni yangilashda MySQL UPDATE bayonotining to'liq sintaksisi:

YANGILASH [ LOW_PRIORITY ] [ E'tibor bermaslik ] jadval SET ustuni 1 = ifoda1, ustun 2 = ifoda2, ... ] ;

MySQL-da bitta jadvalni boshqa jadvaldagi ma'lumotlar bilan yangilashda UPDATE bayonoti sintaksisi:

1-jadvalni YANGILASH SET ustuni1 = (2-jadvaldan 1-iborani TANLASH QAYER shartlari) ;

Bir nechta jadvallarni yangilashda MySQL UPDATE bayonoti sintaksisi:

YANGILISh jadval1, jadval2, ... SET ustuni1 = ifoda1, ustun2 = ifoda2, ... WHERE table1.column = table2.column VA shartlari;

Parametrlar yoki argumentlar

LOW_PRIORITY Agar LOW_PRIORITY ta'minlansa, yangilanish o'qiydigan jarayonlar bo'lmaguncha kechiktiriladi stol. LOW_PRIORITY jadval darajasida blokirovkadan foydalanadigan MyISAM, MEMORY va MERGE jadvallarida ishlatilishi mumkin. E'tibor bermaslik ixtiyoriy. Agar IGNORE taqdim etilsa, yangilash paytida yuzaga kelgan barcha xatolar e'tiborga olinmaydi. Agar qatordagi yangilanish birlamchi kalit yoki noyob indeksning buzilishiga olib keladigan bo'lsa, bu qatorda yangilanish amalga oshirilmaydi. ustun 1, ustun 2 ifoda1, ifoda 2 ustun 1, ustun 2. Shunday qilib ustun 1 ifoda 1, ustun 2 qiymati tayinlanadi ifoda 2, va hokazo. WHERE shartlari Majburiy emas. Yangilanishni amalga oshirish uchun bajarilishi kerak bo'lgan shartlar. TARTIBI BY ifoda Majburiy emas. U LIMIT bilan birgalikda yangilanadigan yozuvlar sonini cheklashda yozuvlarni mos ravishda saralash uchun ishlatilishi mumkin. LIMIT soni_qator Majburiy emas. Agar LIMIT berilgan bo'lsa, u jadvalda yangilanadigan maksimal yozuvlar sonini nazorat qiladi. Ko'pi bilan ko'rsatilgan yozuvlar soni qatorlar soni jadvalda yangilanadi.

Misol - bitta ustunni yangilash

Keling, juda oddiy MySQL UPDATE so'rovi misolini ko'rib chiqaylik.

YANGILISh mijozlar SET familiyasi = "Anderson" WHERE customer_id = 5000;

Ushbu MySQL UPDATE misoli yangilanadi familiya da "Anderson" ga xaridorlar stol qaerda customer_id 5000 ni tashkil qiladi.

Misol - bir nechta ustunlarni yangilash

Keling, MySQL UPDATE misolini ko'rib chiqaylik, unda bitta UPDATE bayonoti bilan bir nechta ustunlarni yangilashni xohlashingiz mumkin.

YANGILANISh mijozlar SET holati = "Kaliforniya", customer_rep = 32 WHERE customer_id > 100;

Agar siz bir nechta ustunlarni yangilamoqchi bo'lsangiz, buni ustun/qiymat juftlarini vergul bilan ajratish orqali qilishingiz mumkin.

davlat"Kaliforniya" ga va mijoz_rep uchun 32 qaerda customer_id 100 dan katta.

Misol - Jadvalni boshqa jadval ma'lumotlari bilan yangilash

Keling, MySQL-dagi boshqa jadvaldagi ma'lumotlar bilan jadvalni qanday yangilashni ko'rsatadigan UPDATE misolini ko'rib chiqaylik.

Mijozlarni YANGILASH
SET shahar = (shaharni tanlang
Yetkazib beruvchilardan
QAYERDA yetkazib beruvchilar. yetkazib beruvchi_ nomi = mijozlar. mijoz_ nomi)
WHERE customer_id > 2000;

Ushbu UPDATE misoli faqat yangilanadi xaridorlar barcha yozuvlar uchun jadval qaerda customer_id 2000 dan ortiq. yetkazib beruvchi_nomi dan yetkazib beruvchilar jadvalga mos keladi mijoz_nomi dan xaridorlar stol, shahar yetkazib beruvchilar jadvalidan nusxa ko'chiriladi shahar dala xaridorlar stol.

Misol - bir nechta jadvallarni yangilash

Keling, MySQL UPDATE misolini ko'rib chiqaylik, unda siz bitta UPDATE bayonotida bir nechta jadvallarni o'z ichiga olgan yangilashni amalga oshirishni xohlashingiz mumkin.

YANGILANISh mijozlar, yetkazib beruvchilar SET customer.city = suppliers.city WHERE customers.customer_id = suppliers.supplier_id;

Ushbu MySQL UPDATE bayonoti misoli yangilanadi shahar dala xaridorlar stolga shahar dan yetkazib beruvchilar stol qaerda customer_id ga mos keladi yetkazib beruvchi_identifikatori.

YANGILANISH sintaksisi

Yagona jadval sintaksisi:
YANGILANISH shya_tabletsh
SET ustun_name1=ifoda1 [, ism_ ustun2=ibora2 ...]


Ko'p jadvalli sintaksis:

YANGILANISh jadval_nomi [, jadval_nomi...] SET ustun_nomi 1=ifoda1 [,ustun_nomi2=ifoda2...]
UPDATE bayonoti mavjud jadval satrlari ustunlarini yangi qiymatlar bilan yangilaydi. SET konstruktsiyasi o'zgartirilishi kerak bo'lgan ustunlar va ularga tayinlanadigan qiymatlarni sanab o'tadi. Agar WHERE bandi ko'rsatilgan bo'lsa, u qaysi qatorlarni yangilash kerakligini belgilaydi. Aks holda, barcha jadval qatorlari yangilanadi. Agar ORDER BY bandi belgilansa, qatorlar belgilangan tartibda yangilanadi. LIMIT konstruktsiyasi yangilanadigan qatorlar soniga cheklov qo'yadi.
UPDATE bayonoti quyidagi modifikatorlarni qo'llab-quvvatlaydi:

  1. Agar LOW_PRIORITY kalit so'zi ko'rsatilgan bo'lsa, UPDATE bajarilishi boshqa barcha mijozlar jadvalni o'qishni tugatmaguncha qoldiriladi.
  2. IGNORE kalit so'zi ko'rsatilgan bo'lsa, takroriy kalit xatolar yuzaga kelgan taqdirda ham yangilash operatsiyasi to'xtatilmaydi. Mojarolarni keltirib chiqaradigan qatorlar yangilanmaydi.

Agar siz jadvaldagi ustunlardan foydalansangiz jadval_nomi ifodalarda UPDATE ustunlarning joriy qiymatidan foydalanadi. Misol uchun, quyidagi bayonot yosh ustunining qiymatini bittaga oshiradi:
mysql> Shaxs ma'lumotlarini YANGILASH SET yoshi=yosh+l;
UPDATE-dagi topshiriqlar chapdan o'ngga amalga oshiriladi. Misol uchun, quyidagi bayonot yosh ustunining qiymatini ikki barobarga oshiradi va keyin uni oshiradi: mysql> Shaxs maʼlumotlari toʻplamini YANGILASH yoshi=yosh*2, yosh=yosh+l;
Agar siz ustun qiymatini uning qiymatiga o'rnatsangiz, MySQL buni aniqlaydi va yangilanmaydi.
Agar siz null EMAS deb e'lon qilingan ustunni NULL ga yangilasangiz, u ma'lum ma'lumotlar turiga mos keladigan standart qiymatga o'rnatiladi va ogohlantirish hisoblagichini bittaga oshiradi. Raqamli ustunlar uchun standart qiymat 0, belgilar ustunlari uchun bo'sh satr (""), sana va vaqt ustunlari uchun null.
UPDATE haqiqatda yangilangan qatorlar sonini qaytaradi. MySQL 3.22 va undan keyingi versiyalarida C API ning mysql_info() funksiyasi API so'rovga mos keladigan va yangilangan satrlar sonini, shuningdek, YANGILANISH vaqtida sodir bo'lgan ogohlantirishlar sonini qaytaradi.
MySQL 3.23 dan boshlab siz limitdan foydalanishingiz mumkin qatorlar soni YANGILANISH doirasini cheklash.
LIMIT konstruktsiyasi quyidagicha ishlaydi:

  1. MySQL 4.0.13 dan oldin LIMIT qayta ishlangan satrlar soniga cheklov edi. Operator yangilanishi bilanoq ishdan ketdi qatorlar soni WHERE bandiga mos keladigan qatorlar.
  2. MySQL 4.0.13 dan boshlab limit qatorga mos keladigan chegara hisoblanadi. Operator topishi bilanoq chiqib ketadi qatorlar soni WHERE bandini qanoatlantiradigan qatorlar, ular haqiqatda yangilanganmi yoki yo'qmi.

Agar UPDATE bayonoti band bo'yicha tartibni o'z ichiga olsa, u holda satrlar ushbu konstruktsiya tomonidan belgilangan tartibda yangilanadi. ORDER BY dan MySQL 4.0.0 dan boshlab foydalanish mumkin.
MySQL 4.0.0 dan boshlab, bir vaqtning o'zida bir nechta jadvallarda ishlaydigan UPDATE operatsiyalarini bajarish ham mumkin:
Elementlarni YANGILASH, oy SET items.price=month.price WHERE items.id-month. id/ Ushbu misol vergul operatoridan foydalangan holda ichki birlashmani ko'rsatadi, lekin ko'p jadvalli YANGILANIShlar SELECT iborasida ruxsat etilgan qo'shilishning har qanday turidan foydalanishi mumkin, masalan, LEFT JOIN.
Eslatmada!

  • Ko‘p jadvalli UPDATE bayonotlarida ORDER BY yoki LIMIT dan foydalana olmaysiz.
MySQL 4.0.18 dan oldin, ko'p jadvalli YANGILANIShda ishlatiladigan barcha jadvallarda, hatto ular haqiqatda yangilanmagan bo'lsa ham, UPDATE imtiyoziga ega bo'lish kerak edi. MySQL 4.0.18 dan boshlab, ustunlari faqat o'qiladigan, lekin yangilanmagan bunday jadvallar faqat SELECT imtiyozini talab qiladi.
Chet el kalit cheklovlari belgilangan InnoDB jadvallarida ko'p jadvalli UPDATE bayonotidan foydalansangiz, MySQL optimallashtiruvchisi ularni ota-ona munosabatlaridan farqli tartibda qayta ishlashi mumkin. Bunday holda, bayonot muvaffaqiyatsiz bo'ladi va tranzaksiya orqaga qaytariladi. Buning o'rniga, bitta jadvalni yangilang va tegishli jadvallarni avtomatik ravishda yangilash uchun InnoDB mexanizmini ta'minlaydigan ON UPDATE xususiyatiga ishoning.