Rumah > pangkalan data > tutorial mysql > Bolehkah Pernyataan Pilih MySQL Menggunakan dan Mentakrifkan Semula Pembolehubah Pengguna dengan Amanah Dalam Satu Pernyataan?

Bolehkah Pernyataan Pilih MySQL Menggunakan dan Mentakrifkan Semula Pembolehubah Pengguna dengan Amanah Dalam Satu Pernyataan?

Barbara Streisand
Lepaskan: 2024-12-03 10:41:17
asal
141 orang telah melayarinya

Can MySQL's Select Statement Reliably Use and Redefine User Variables Within a Single Statement?

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan