概要 連合 接続データセットキーワードは、2つのクエリ結果セットを1つに連結し、同一のレコードを除外することができます。 ユニオンオール 接続データセット キーワードを使用すると、同一のレコードを除外せずに、2 つのクエリ結果セットを 1 つに連結できます。 本日、依頼を受けてUNIONを使ってクエリを実行したところ、2つのクエリをそれぞれORDER BYを使って連結するとうまく並び替えられないことが分かりました。色々と苦労したので記録しておきます。 テーブル構造とデータ -- テーブルを作成する CREATE TABLE test_user ( ID int(11) NOT NULL AUTO_INCREMENT、 USER_ID int(11) DEFAULT NULL COMMENT 'ユーザーアカウント', USER_NAME varchar(255) DEFAULT NULL COMMENT 'ユーザー名', AGE int(5) デフォルト NULL コメント '年齢', COMMENT varchar(255) DEFAULT NULL COMMENT 'はじめに', 主キー (ID) ) ENGINE=InnoDB AUTO_INCREMENT=7 デフォルト CHARSET=utf8; -- データ挿入ステートメント INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('1', '111', 'Happy rookie', '18', 'Very happy today'); INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('2', '222', '悲しい新人', '21', '今日はとても悲しい'); INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('3', '333', '本気の新人', '30', '今日はとても本気'); INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('4', '444', 'Happy rookie', '18', '今日はとても幸せです'); INSERT INTO test_user (ID, USER_ID, USER_NAME, AGE, COMMENT) VALUES ('5', '555', '本気の新人', '21', '今日はとても本気です'); デフォルトのテーブルデータは次のように表示されます 結果分析を実行する -- クエリ 1 選択 * から テストユーザー u 年齢順 結果セット 1 -- クエリ 2 -- UNIONの使用 ( 選択 * から テストユーザー u 年齢順 ) 連合 ( 選択 * から テストユーザー u 年齢順 ); -- クエリ 3 -- UNION ALLの使用 ( 選択 * から テストユーザー u 年齢順 ) ユニオンオール ( 選択 * から テストユーザー u 年齢順 ) 結果セット2: UNIONの使用 UNION は同一のレコードを結合するため (DISTINCT と同じ効果があります)、ここでは 5 つのレコードのみが表示されます。 結果セット3: UNION ALLの使用 UNION ALL を使用してソートする必要がある場合は、サブクエリとしてクエリを実行する必要があります。 -- クエリ 4 -- UNION ALLをサブクエリとして使用し、SELECTをソートする * から ( ( 選択 * から テストユーザー u 注文する 年 ) ユニオンオール ( 選択 * から テストユーザー u 注文する 年 ) ) 注文する 年; 結果セット 4 改善する 関連する経験を検索した後、私は不必要なことをしていたことに気づきました。サブクエリを使用せずにソートを実行できることがわかりました。 -- クエリ 5 -- 最初のクエリではソートを使用しません。ソートを使用する場合は、括弧なしでエラーが報告されます (これが、以前はサブクエリを使用したかったのに、この方法を思いつかなかった理由です) 選択 * から テストユーザー u ユニオンオール 選択 * から テストユーザー u 注文する 年 結果セットは結果セット 4 と同じなので、結果はここに貼り付けられません。 結論は UNION (または UNION ALL) ステートメントを使用する場合、UNION の 2 つの結果セットが別々にソートされてから結合されると、ORDER BY は無効になります。並べ替えるには、次の 2 つの方法があります。
参考リンク cnblogs: MySQL での UNION と UNION ALL の使用 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Vue 親コンポーネントが子コンポーネント関数の実装を呼び出す
>>: Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル
目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...
デフォルトでは、MySQL は日付に 0 値を挿入することを受け入れますが、実際には日付の 0 値に...
目次1. コンポーネントの紹介2. コンポーネントの内部構造とロジック1. コード組織構造2. マッ...
今日は、uniapp を使用して Echarts を統合し、マップ チャートを表示します。 mpvu...
==================================================...
序文開発中は、インターフェース要求の繰り返しによってさまざまな問題が発生することがよくあります。ネッ...
目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...
1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...
Mysql-connector-java ドライバのバージョンの問題私のデータベースのバージョンは ...
目次1. 終了2. クロージャの使用シナリオ1.タイムアウトを設定する2. コールバック3. 手ぶれ...
01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...
この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...
HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 HTML ...
適応型レイアウトは、実際のアプリケーションでますます一般的になっています。今日は、主にフローティング...
序文Linux カーネルでは、元のコードとの互換性を保つため、または特定の仕様に準拠するため、また現...