Rumah > Soal Jawab > teks badan
P粉1558329412023-08-24 13:38:21
Jika anda menetapkan lumpuh dalam klausa ONLY_FULL_GROUP_BY
服务器模式(默认情况下),您的查询将在 MYSQL
中运行。但在本例中,您使用的是不同的 RDBMS。因此,为了使您的查询正常工作,请将所有非聚合列添加到您的GROUP BY
, contohnya
SELECT col1, col2, SUM(col3) totalSUM FROM tableName GROUP BY col1, col2
Lajur bukan agregat bermakna lajur tidak akan dihantar ke fungsi agregat, seperti SUM
、MAX
、COUNT
dsb.
P粉0900872282023-08-24 10:30:14
Andaikan saya mempunyai jadual berikutT
:
a b -------- 1 abc 1 def 1 ghi 2 jkl 2 mno 2 pqr
Saya melaksanakan pertanyaan berikut:
SELECT a, b FROM T GROUP BY a
Output hendaklah mempunyai dua baris, satu untuk a=1
,第二行为 a=2
.
Tetapi apakah nilai b yang perlu ditunjukkan dalam dua baris ini? Terdapat tiga kemungkinan untuk setiap kes, dan tiada apa-apa dalam pertanyaan menjelaskan nilai yang hendak dipilih untuk b dalam setiap kumpulan. Maknanya sangat kabur.
Ini menunjukkan Peraturan Nilai Tunggal yang melarang mendapat hasil yang tidak ditentukan apabila menjalankan pertanyaan KUMPULAN OLEH dan termasuk mana-mana kriteria lajur dalam senarai pilih yang bukan sebahagian daripada kumpulan dan tidak muncul dalam fungsi agregat (SUM, MIN , MAX, dsb. .).
Membetulkannya mungkin kelihatan seperti ini:
SELECT a, MAX(b) AS x FROM T GROUP BY a
Sekarang jelas anda mahukan hasil berikut:
a x -------- 1 ghi 2 pqr