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

Menggunakan `rand()` dengan `memiliki`

Saya pikir masalahnya adalah HAVING diterapkan setelah GROUP BY, tetapi masih sebelum fase SELECT. Saya menyadari ini membingungkan karena klausa HAVING mereferensikan kolom dari pernyataan SELECT, tetapi saya pikir itu pada dasarnya hanya mengeksekusi apa pun yang ada dalam pernyataan SELECT dua kali - sekali untuk memiliki, dan sekali lagi untuk SELECT.

Misalnya, lihat jawaban ini .

Perhatikan, ini sangat membingungkan karena jika Anda merujuk ke nama kolom yang tidak muncul dalam pernyataan SELECT dalam klausa HAVING, itu akan menimbulkan kesalahan.

Misalnya, biola ini

Tetapi sesuai dengan biola di atas, itu masih memungkinkan Anda memfilter berdasarkan hasil fungsi yang tidak muncul di output. Singkat cerita, klausa HAVING masih melakukan apa yang Anda inginkan, tetapi Anda tidak dapat memfilter keduanya pada nilai acak dan menampilkannya secara bersamaan menggunakan pendekatan itu. Jika Anda perlu melakukannya, Anda perlu menggunakan subquery untuk memperbaiki nilainya terlebih dahulu, kemudian kueri luar dapat memfilter dan menampilkannya.

Juga, untuk memperjelasnya, mungkin ada baiknya menggunakan RAND() di klausa have, bukan bagian SQL. Meskipun saya mengerti bahwa pertanyaan ini menanyakan mengapa ia melakukan ini daripada mencoba memecahkan masalah secara khusus.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengambil catatan mysql ke tabel html menggunakan PHP

  2. Unit Tanggal &Waktu di MySQL (Daftar Lengkap)

  3. Bagaimana cara menduplikasi tabel dengan kunci &fitur struktur lainnya yang dipertahankan di MySQL?

  4. Kolom Tergantung pada kolom lainnya

  5. Pilih semua bulan dalam rentang tanggal tertentu, termasuk yang memiliki nilai 0