Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

grup sql dengan versus berbeda

GROUP BY memetakan grup baris ke satu baris, per nilai yang berbeda dalam spesifik kolom, yang bahkan tidak harus ada di daftar pilih.

SELECT b, c, d FROM table1 GROUP BY a;

Kueri ini adalah SQL legal (koreksi: hanya di MySQL; sebenarnya itu bukan SQL standar dan tidak didukung oleh merek lain). MySQL menerimanya, dan percaya bahwa Anda tahu apa yang Anda lakukan, memilih b , c , dan d dengan cara yang jelas karena mereka adalah dependensi fungsional a .

Namun, Microsoft SQL Server dan merek lain tidak mengizinkan kueri ini, karena tidak dapat menentukan dependensi fungsional dengan mudah. edit: Sebaliknya, SQL standar mengharuskan Anda untuk mengikuti Aturan Nilai Tunggal , yaitu setiap kolom dalam daftar pilih harus diberi nama di GROUP BY klausa atau menjadi argumen untuk fungsi yang ditetapkan.

Sedangkan DISTINCT selalu melihat semua kolom di daftar pilih, dan hanya kolom itu. Adalah kesalahpahaman umum bahwa DISTINCT memungkinkan Anda untuk menentukan kolom:

SELECT DISTINCT(a), b, c FROM table1;

Meskipun tanda kurung membuat DISTINCT terlihat seperti panggilan fungsi, tidak. Ini adalah opsi kueri dan nilai berbeda di salah satu dari tiga bidang daftar pilih akan mengarah ke baris berbeda dalam hasil kueri. Salah satu ekspresi dalam daftar pilih ini memiliki tanda kurung di sekitarnya, tetapi ini tidak akan memengaruhi hasilnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kinerja SQL JOIN vs IN?

  2. Memecahkan masalah kueri yang berjalan lama di MS SQL Server

  3. Sintaks salah di dekat ''

  4. Bagaimana Mengidentifikasi duplikasi kunci utama dari kode kesalahan SQL Server 2008?

  5. 4 Fungsi untuk Memformat Angka menjadi 2 Tempat Desimal di SQL Server