Mendefinisikan dan Menggunakan Pembolehubah dalam Penyata Pilihan
Dalam MySQL, secara amnya tidak digalakkan untuk memberikan nilai kepada pembolehubah pengguna dan membaca nilai tersebut dalam pernyataan yang sama. Walaupun ia mungkin kelihatan berfungsi dalam senario tertentu, gelagat ini tidak dijamin dan boleh berbeza-beza bergantung pada elemen pernyataan tertentu dan versi pelayan MySQL.
Sebagai contoh, pertimbangkan pernyataan berikut:
SELECT @z:=SUM(item), 2*@z FROM TableA;
Dalam kes ini, hasil yang dijangkakan ialah lajur kedua mengembalikan nilai 2 didarab dengan jumlah lajur item. Walau bagaimanapun, MySQL mungkin menilai pernyataan dalam susunan yang berbeza, menghasilkan nilai NULL untuk lajur kedua.
Sebab di sebalik tingkah laku ini ialah MySQL tidak menjamin susunan penilaian ekspresi yang melibatkan pembolehubah pengguna. Dengan mengubah sedikit penyataan, seperti memperkenalkan klausa GROUP BY, susunan penilaian mungkin berubah.
Walau bagaimanapun, terdapat penyelesaian untuk mencapai fungsi yang diingini dengan menggunakan subquery:
select @z, @z*2 from (SELECT @z:=sum(item) FROM TableA ) t;
Dalam subkueri ini, pembolehubah @z diberikan jumlah lajur item dan kemudian dipilih bersama dengan nilai dua kali gandanya. Pendekatan ini memastikan bahawa nilai pembolehubah dinilai dengan betul dan digunakan dalam lajur kedua.
Atas ialah kandungan terperinci Bolehkah Pernyataan Pilih MySQL Menggunakan dan Mentakrifkan Semula Pembolehubah Pengguna dengan Amanah Dalam Satu Pernyataan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!