ホームページ データベース mysql チュートリアル union组合结果集时的order问题

union组合结果集时的order问题

Jun 07, 2016 pm 05:59 PM
union 結果セット

如果能确定各查询结果不会有重复的项,最好就带上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,因为这样还是可以提高一些效率的。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語でのユニオンの使い方 C言語でのユニオンの使い方 Sep 27, 2023 am 11:00 AM

C 言語での Union の使用は、異なるデータ型を同じメモリ位置に格納できるようにする特別なデータ型です。Union を使用すると、メモリ領域を節約し、異なるデータ型間の変換を容易にすることができます。 Union を使用する場合は、対応するメンバーが有効であり、同時にアクセスできるメンバーは 1 つだけであることに注意する必要があります。

MySQL で FULL OUTER JOIN 関数を使用して 2 つのテーブルの結合を取得する方法 MySQL で FULL OUTER JOIN 関数を使用して 2 つのテーブルの結合を取得する方法 Jul 26, 2023 pm 05:45 PM

MySQL で FULLOUTERJOIN 関数を使用して 2 つのテーブルの結合を取得する方法 MySQL の FULLOUTERJOIN 関数は、内部結合と外部結合を組み合わせた強力な結合操作です。これを使用すると、2 つのテーブルの和集合を取得できます。つまり、2 つのテーブル内のすべてのデータを 1 つの結果セットに結合できます。この記事では、FULLOUTERJOIN 関数の使用法を紹介し、読者の理解を深めるためにいくつかのサンプル コードを提供します。 FULLOUTERJOIN関数

mysql ユニオンを使用して完全な外部結合クエリを実装する方法 mysql ユニオンを使用して完全な外部結合クエリを実装する方法 May 30, 2023 pm 06:49 PM

1. ユニオンは複数テーブル接続クエリの手法ではなく、複数のクエリ文のクエリ結果を 1 つの結果に結合し、重複データを削除します。 2. 全外部結合は、左のテーブルと右のテーブルのデータを問い合わせて、接続条件に従って接続します。例 #左外側の Aunion と右外側の BSELECT*FROMt_categorycLEFTOUTERJOINt_productpONc.cid=p.cnounionSELECT*FROMt_categorycRIGHTOUTERJOINt_productpONc.cid=p.cno を使用する

データ本体の共存を実現するために、Java は Union クラスをどのように定義するのでしょうか? データ本体の共存を実現するために、Java は Union クラスをどのように定義するのでしょうか? May 14, 2023 pm 03:34 PM

データ本体の共存を実装するための Union クラスを定義します。C/C++ 言語では、ユニオン (ユニオンとも呼ばれます) は、構造体に似たデータ構造です。構造体と同様に、共用体には多くのデータ型と変数を含めることができます。両者の違いは次のとおりです: 構造体のすべての変数は「共存」し、すべての変数は同時に有効になります。各変数は異なるメモリ空間を占有します。共用体では、各変数は「相互に排他的」であり、同時に有効なのは 1 つの変数だけであり、すべての変数が同じメモリ空間を占有します。複数のデータがメモリを共有する必要がある場合、または一度に複数のデータのうち 1 つだけを取得する必要がある場合は、共用体を使用できます。 Javaで

UNION を最適化して MySQL を通じてパフォーマンスを向上させる方法 UNION を最適化して MySQL を通じてパフォーマンスを向上させる方法 May 11, 2023 pm 05:40 PM

多くのデータベース アプリケーションでは、複数のデータ ソースからのデータを統合する必要がある状況に直面します。 MySQL の UNION ステートメントは、この状況を解決する方法であり、2 つ以上の SELECT ステートメントの結果セットを 1 つにマージできます。これは非常に便利な機能ですが、UNION ステートメントが最適化されていない場合、システムでパフォーマンスの問題を引き起こす可能性もあります。この記事では、MySQL を通じて UNION を最適化してパフォーマンスを向上させる方法について説明します。 U の使用中に UNIONALL を使用する

Union を使用して MySQL の Like ステートメントを最適化する方法 Union を使用して MySQL の Like ステートメントを最適化する方法 May 31, 2023 pm 03:55 PM

Union を使用して Like ステートメントを最適化する 1) 場合によっては、クエリ内の比較に or 演算子を使用する必要があります。 or キーワードが where 句で頻繁に使用されすぎると、MySQL オプティマイザがレコードを取得するために誤ってフル テーブル スキャンを選択する可能性があります。 Union 句を使用すると、特にクエリの一方に最適化されたインデックスがあり、もう一方のクエリにも最適化されたインデックスがある場合に、クエリの実行が高速になります。たとえば、first_name と last_name にそれぞれインデックスがある場合、次のクエリ ステートメントを実行します: mysql>select*fromstudentswherefirst_namelike'A

PHP 関数「mysqli_fetch_assoc」を使用して、結果セットから行を連想配列として取得します PHP 関数「mysqli_fetch_assoc」を使用して、結果セットから行を連想配列として取得します Jul 24, 2023 pm 08:12 PM

PHP 関数「mysqli_fetch_assoc」を使用して、結果セットから行を連想配列としてフェッチする PHP では、データベースとの対話は一般的なタスクです。 SELECT クエリを実行して結果セットを取得する場合、通常は、その後の処理のために結果セット内のデータを PHP 配列に保存する必要があります。 PHP には結果セットを処理するための複数の関数が用意されており、よく使用される関数の 1 つが「mysqli_fetch_assoc」です。この関数は結果セットから行を取得します

mysqlでunionを使う時の注意点は何ですか? mysqlでunionを使う時の注意点は何ですか? Jun 03, 2023 pm 08:04 PM

1. Union 演算子は、2 つ以上の select ステートメントの結果を結果セットに結合するために使用されます。複数の select ステートメントを実行すると、重複したデータが削除されます。 2. Union を使用して結果セットをマージする場合、2 つの結果セットの列の数が同じである必要があります。例selectplayerno,townfromPLAYERSwheretown='Inglewood' Unionselectplayerno,townfromPLAYERSwheretown='Plymouth';

See all articles