Rumah pangkalan data tutorial mysql union组合结果集时的order问题

union组合结果集时的order问题

Jun 07, 2016 pm 05:59 PM
union set keputusan

如果能确定各查询结果不会有重复的项,最好就带上all,因为这样还是可以提高一些效率的。

近日,在一个项目中用到union组合两个select结果,调试sql时总是报错,所报错误也只是说在union附近有问题,因为sql中用到了group,我想也许是union不支持吧,由于时间紧,就先在程序中做了合并处理。但程序员对于代码的完美性要求总是不能放弃的,所以,常常会有如鲠在喉的感觉,不搞明白心里会不舒服。

仔细查看了MS的在线帮助,在有关UNION的描述中找到这样一段说明:

如果使用 UNION 运算符,那么各个 SELECT 语句不能包含它们自己的 ORDER BY 或 COMPUTE 子句。而只能在最后一个 SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。只能在各个 SELECT 语句中指定 GROUP BY 和 HAVING 子句。

在这段说明中并没有说union不能用于group,而是说在各个Select中不能包含order by,而在我的语句中恰恰就有这个,看来是我猜错了。试了一下把order去掉,果然不会报错了。也就是说,使用union的时候,各查询group是可以的,但不能order或compute。那如果说非要group,有没有办法呢?正常情况下只能在最后使用,而且是针对组合后的结果集进行排序的,而我刚才所说的group,就不能用于最终结果集,而只能用于每个查询。

这是正常的用法,有些人想在每个查询中先排序,然后再union,也有非正常的用法,类似:

select * from (select a from [table] order by a) union ...

另外,union后面还可以加上all,在默认情况下,union时会删除重复的项,如果加上all则不进行筛选,组合所有的结果。如果能确定各查询结果不会有重复的项,最好就带上all,因为这样还是可以提高一些效率的。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan kesatuan dalam bahasa c Cara menggunakan kesatuan dalam bahasa c Sep 27, 2023 am 11:00 AM

Penggunaan kesatuan dalam bahasa C ialah jenis data khas yang membolehkan jenis data yang berbeza disimpan di lokasi memori yang sama Penggunaan kesatuan boleh membantu kami menjimatkan ruang memori dan memudahkan penukaran antara jenis data yang berbeza. Apabila menggunakan kesatuan, anda perlu ambil perhatian bahawa ahli yang sepadan adalah sah dan hanya seorang ahli boleh diakses pada masa yang sama.

Bagaimana untuk menggunakan fungsi FULL OUTER JOIN dalam MySQL untuk mendapatkan penyatuan dua jadual Bagaimana untuk menggunakan fungsi FULL OUTER JOIN dalam MySQL untuk mendapatkan penyatuan dua jadual Jul 26, 2023 pm 05:45 PM

Cara menggunakan fungsi FULLOUTERJOIN dalam MySQL untuk mendapatkan gabungan dua jadual Dalam MySQL, fungsi FULLOUTERJOIN ialah operasi cantum yang kuat yang menggabungkan cantuman dalam dan cantuman luar. Ia boleh digunakan untuk mendapatkan penyatuan dua jadual, iaitu, menggabungkan semua data dalam dua jadual ke dalam set hasil tunggal. Artikel ini akan memperkenalkan penggunaan fungsi FULLOUTERJOIN dan menyediakan beberapa kod sampel untuk membantu pembaca memahami dengan lebih baik. Fungsi FULLOUTERJOIN

Cara menggunakan mysql union untuk melaksanakan pertanyaan gabungan luar penuh Cara menggunakan mysql union untuk melaksanakan pertanyaan gabungan luar penuh May 30, 2023 pm 06:49 PM

1. Kesatuan bukan kaedah pertanyaan sambungan berbilang jadual Ia menggabungkan hasil pertanyaan berbilang ayat pertanyaan menjadi satu hasil dan mengalih keluar data pendua. 2. Sambungan luar penuh menanyakan data jadual kiri dan jadual kanan, dan kemudian menyambung mengikut keadaan sambungan. Contoh #Gunakan Aunion luar kiri dan luar kanan BSELECT*FROMt_categorycLEFTOUTERJOINt_productpONc.cid=p.cnounionSELECT*FROMt_categorycRIGHTOUTERJOINt_productpONc.cid=p.cno

Bagaimanakah java menentukan kelas Union untuk merealisasikan kewujudan bersama badan data? Bagaimanakah java menentukan kelas Union untuk merealisasikan kewujudan bersama badan data? May 14, 2023 pm 03:34 PM

Tentukan kelas Kesatuan untuk melaksanakan kewujudan bersama badan data Dalam bahasa C/C++, kesatuan, juga dikenali sebagai kesatuan, ialah struktur data yang serupa dengan struct. Kesatuan, seperti struct, boleh mengandungi banyak jenis data dan pembolehubah Perbezaan antara kedua-duanya adalah seperti berikut: semua pembolehubah dalam struct "wujud bersama", dan semua pembolehubah adalah sah pada masa yang sama. dalam kesatuan, setiap pembolehubah adalah "saling eksklusif", hanya satu pembolehubah berkesan pada masa yang sama, dan semua pembolehubah menduduki ruang memori yang sama. Apabila berbilang data perlu berkongsi memori atau hanya satu daripada berbilang data perlu diambil pada satu masa, kesatuan boleh digunakan. di Jawa

Bagaimana untuk mengoptimumkan UNION melalui MySQL untuk meningkatkan prestasi Bagaimana untuk mengoptimumkan UNION melalui MySQL untuk meningkatkan prestasi May 11, 2023 pm 05:40 PM

Dalam banyak aplikasi pangkalan data, kita berhadapan dengan situasi di mana kita perlu menyepadukan data daripada pelbagai sumber data. Kenyataan UNION MySQL ialah satu cara untuk menyelesaikan situasi ini, yang membolehkan kami menggabungkan set hasil dua atau lebih pernyataan SELECT menjadi satu. Walaupun ini adalah ciri yang sangat mudah, kenyataan UNION juga boleh menyebabkan isu prestasi pada sistem anda jika tidak dioptimumkan. Artikel ini akan meneroka cara mengoptimumkan UNION untuk meningkatkan prestasi melalui MySQL. Gunakan UNIONALL semasa menggunakan U

Cara menggunakan Union untuk mengoptimumkan pernyataan Suka dalam MySQL Cara menggunakan Union untuk mengoptimumkan pernyataan Suka dalam MySQL May 31, 2023 pm 03:55 PM

Optimumkan kenyataan Suka dengan Kesatuan 1) Kadangkala, anda mungkin perlu menggunakan operator atau untuk perbandingan dalam pertanyaan. Apabila kata kunci atau digunakan terlalu kerap dalam klausa where, ia boleh menyebabkan pengoptimum MySQL tersilap memilih imbasan jadual penuh untuk mendapatkan semula rekod. Klausa kesatuan boleh membuat pertanyaan dilaksanakan dengan lebih pantas, terutamanya apabila salah satu pertanyaan mempunyai indeks yang dioptimumkan dan pertanyaan lain juga mempunyai indeks yang dioptimumkan. Sebagai contoh, apabila terdapat indeks pada nama_pertama dan nama_akhir masing-masing, laksanakan pernyataan pertanyaan berikut: mysql>select*fromstudentswherefirst_namelike'A

Gunakan fungsi PHP 'mysqli_fetch_assoc' untuk mendapatkan baris daripada set hasil sebagai tatasusunan bersekutu Gunakan fungsi PHP 'mysqli_fetch_assoc' untuk mendapatkan baris daripada set hasil sebagai tatasusunan bersekutu Jul 24, 2023 pm 08:12 PM

Mengambil baris daripada set hasil sebagai tatasusunan bersekutu menggunakan fungsi PHP "mysqli_fetch_assoc" Dalam PHP, berinteraksi dengan pangkalan data adalah tugas biasa. Apabila kami melaksanakan pertanyaan SELECT dan mendapatkan set hasil, kami biasanya perlu menyimpan data dalam set hasil ke dalam tatasusunan PHP untuk pemprosesan selanjutnya. PHP menyediakan pelbagai fungsi untuk memproses set hasil, salah satu fungsi yang biasa digunakan ialah "mysqli_fetch_assoc". Fungsi ini mendapat baris daripada set hasil

Apakah perkara yang perlu diperhatikan apabila menggunakan kesatuan dalam mysql? Apakah perkara yang perlu diperhatikan apabila menggunakan kesatuan dalam mysql? Jun 03, 2023 pm 08:04 PM

1. Operator kesatuan digunakan untuk menggabungkan hasil dua atau lebih penyata pilih ke dalam set hasil. Penyata pilihan berbilang akan memadamkan data pendua. 2. Apabila menggunakan kesatuan untuk menggabungkan set hasil, bilangan lajur dalam dua set hasil perlu sama. Contohselectplayerno,townfromPLAYERSwheretown='Inglewood' uniionselectplayerno,townfromPLAYERSwheretown='Plymouth';

See all articles