Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tentukan variabel dalam pilih dan gunakan dalam pilih yang sama

MySQL dokumentasi cukup jelas tentang ini:

Sebagai aturan umum, Anda tidak boleh memberikan nilai ke variabel pengguna dan membaca nilai dalam pernyataan yang sama. Anda mungkin mendapatkan hasil yang Anda harapkan, tetapi ini tidak dijamin. Urutan evaluasi untuk ekspresi yang melibatkan variabel pengguna tidak ditentukan dan dapat berubah berdasarkan elemen yang terkandung dalam pernyataan yang diberikan; selain itu, urutan ini tidak dijamin sama antara rilis Server MySQL. Dalam SELECT @a, @a:[email protected] +1, ..., Anda mungkin berpikir bahwa MySQL akan mengevaluasi @a terlebih dahulu dan kemudian melakukan tugas kedua. Namun, mengubah pernyataan (misalnya, dengan menambahkan klausa aGROUP BY, HAVING, atau ORDER BY) dapat menyebabkan MySQL memilih rencana eksekusi dengan urutan evaluasi yang berbeda.

Anda dapat melakukan apa yang Anda inginkan menggunakan subquery:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Praktik Terbaik Replikasi MySQL

  2. Bagaimana Anda membuat versi skema database Anda?

  3. Bagaimana Fungsi LOCATE() Bekerja di MySQL

  4. Menggunakan strtotime untuk tanggal sebelum 1970

  5. Cara memfilter hasil SQL dalam relasi has-many-through