


Petua untuk mengelakkan konflik penamaan dalam klausa SQL GROUP BY dan ORDER BY
Dalam pertanyaan SQL yang melibatkan gabungan dan pengisihan berbilang lajur, nama lajur yang digunakan dalam klausa GROUP BY
dan ORDER BY
perlu dipertimbangkan dengan teliti kerana mungkin terdapat perbezaan penamaan antara nama lajur output dan nama lajur sumber dalam konflik bahasa SQL.
Sebagai contoh, matlamat pertanyaan adalah untuk mengumpulkan data mengikut model perkakasan (nama), jenis percubaan (jenis) dan hasil binari (hasil dipermudahkan kepada 0 atau 1). Walau bagaimanapun, output yang dikehendaki adalah untuk memaparkan hanya satu baris untuk setiap model dengan gabungan jenis dan kes yang unik.
Masalah timbul daripada menggunakan nama lajur sumber GROUP BY
dalam kedua-dua ungkapan CASE
dan result
. Standard SQL menyatakan bahawa dalam kes ini, GROUP BY
mentafsirkan result
sebagai nama lajur sumber dan ORDER BY
sebagai nama lajur output.
Untuk menyelesaikan konflik ini dan mendapatkan output yang diharapkan, terdapat beberapa cara:
-
Gunakan alias lajur : Tambahkan alias pada ungkapan
CASE
, pastikan ia berbeza daripada mana-mana nama lajur sumber. Contohnya:
... CASE WHEN attempt.result = 0 THEN 0 ELSE 1 END AS result1 ... GROUP BY model.name, attempt.type, result1 ...
- Gunakan rujukan kedudukan: Gunakan nombor untuk merujuk secara jelas kedudukan lajur dalam senarai PILIH. Contohnya:
... GROUP BY 1, 2, 3 ...
-
mengandungi pemalar : Walaupun lajur malar (contohnya, hari) tidak perlu disertakan dalam
GROUP BY
, demi kejelasan ia boleh ditambah tanpa menjejaskan keputusan.
Berikut ialah pertanyaan yang diubah suai menggunakan rujukan lokasi:
SELECT model.name , attempt.type , CASE WHEN attempt.result = 0 THEN 0 ELSE 1 END AS result , CURRENT_DATE - 1 AS day , count(*) AS ct FROM attempt JOIN prod_hw_id USING (hard_id) JOIN model USING (model_id) WHERE ts >= '2013-11-06 00:00:00' AND ts < '2013-11-07 00:00:00' GROUP BY 1, 2, 3 ORDER BY 1, 2, 3;
Dengan memastikan nama lajur yang betul dan menggunakan rujukan kedudukan, pertanyaan kini mengagregatkan data seperti yang diharapkan, memberikan hanya satu baris hasil untuk setiap gabungan unik model, jenis dan hasil.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Konflik Penamaan dalam SQL GROUP BY dan ORDER BY Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Artikel membincangkan strategi untuk mengendalikan dataset besar di MySQL, termasuk pembahagian, sharding, pengindeksan, dan pengoptimuman pertanyaan.

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

Artikel ini membincangkan jadual menjatuhkan di MySQL menggunakan pernyataan Jadual Drop, menekankan langkah berjaga -jaga dan risiko. Ia menyoroti bahawa tindakan itu tidak dapat dipulihkan tanpa sandaran, memperincikan kaedah pemulihan dan bahaya persekitaran pengeluaran yang berpotensi.

Artikel membincangkan menggunakan kunci asing untuk mewakili hubungan dalam pangkalan data, memberi tumpuan kepada amalan terbaik, integriti data, dan perangkap umum untuk dielakkan.

Artikel membincangkan mendapatkan MySQL terhadap suntikan SQL dan serangan kekerasan menggunakan pernyataan yang disediakan, pengesahan input, dan dasar kata laluan yang kuat. (159 aksara)

Artikel ini membincangkan membuat indeks pada lajur JSON dalam pelbagai pangkalan data seperti PostgreSQL, MySQL, dan MongoDB untuk meningkatkan prestasi pertanyaan. Ia menerangkan sintaks dan faedah mengindeks laluan JSON tertentu, dan menyenaraikan sistem pangkalan data yang disokong.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.
