Rumah > pangkalan data > tutorial mysql > Bolehkah saya Menggunakan Pembolehubah Ditakrifkan Pengguna dalam Pernyataan SELECT MySQL Tunggal?

Bolehkah saya Menggunakan Pembolehubah Ditakrifkan Pengguna dalam Pernyataan SELECT MySQL Tunggal?

Barbara Streisand
Lepaskan: 2024-12-02 13:01:11
asal
925 orang telah melayarinya

Can I Use a User-Defined Variable in a Single MySQL SELECT Statement?

Bolehkah saya Mentakrifkan Pembolehubah dalam SELECT dan Menggunakannya dalam Pernyataan yang Sama?

Kemungkinan untuk mentakrifkan dan menggunakan pembolehubah dalam kenyataan SELECT yang sama sering dipersoalkan. Pertimbangkan contoh berikut:

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;
Salin selepas log masuk

Dalam senario sedemikian, lajur kedua secara konsisten mengembalikan NULL. Ini adalah pelik kerana operasi serupa menggunakan prosedur tersimpan berfungsi seperti yang dijangkakan:

SELECT 
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;
Salin selepas log masuk

Penjelasan

Dokumentasi MySQL secara eksplisit menyatakan bahawa memberikan nilai kepada pembolehubah pengguna dan membacanya dalam pernyataan yang sama adalah tidak boleh dipercayai. Susunan penilaian untuk pembolehubah pengguna tidak ditentukan dan mungkin berbeza-beza berdasarkan elemen pernyataan dan versi Pelayan MySQL. Oleh itu, hasil yang diharapkan tidak dapat dijamin.

Penyelesaian

Untuk mencapai hasil yang diinginkan, anda boleh menggunakan subquery:

select @z, @z*2
from (SELECT @z:=sum(item)
      FROM TableA
     ) t;
Salin selepas log masuk

Atas ialah kandungan terperinci Bolehkah saya Menggunakan Pembolehubah Ditakrifkan Pengguna dalam Pernyataan SELECT MySQL Tunggal?. 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