概要 連合 接続データセットキーワードは、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 をインストールするチュートリアル
目次導入インストールと使用方法文章の相違点と類似点の簡単な比較VuexとPiniaの長所と短所Pin...
MySQL データベースにとって binlog バイナリ ログがどれほど重要であるかについては詳し...
MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...
複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...
React 16の内容です。最新技術ではありませんが、ドキュメントで調べるまであまり話題に上がらなか...
目次テーブルの競合を見つけて修正するインデックス統計の更新テーブルの競合を見つけて修正するデータ テ...
01. VMware Workstation Pro 15 のダウンロードダウンロード: VMwa...
1つ。序文<br />この種の質問は、どの専門掲示板でも見かけます。Google で検索...
Ubuntu 20.04 がリリースされ、多くの新機能が導入されましたが、慣れていない機能も多くあ...
フロントエンド開発者にとって、さまざまな主要ブラウザのさまざまなバージョンでコードが適切に動作するこ...
最近、ウェブサイトを開発する際にトップに戻るボタンを作成する必要がありますが、私は主にバックエンドの...
目次1. ソフトウェアパッケージ2. gccをインストールする3. libfastcommonをイン...
解決策: システム内のすべての .vscode 関連プロセスを終了します (または、remote-s...
Ubuntu のバージョンに関係なく、MySQL データベースのインストールは基本的に同じです。具...
VirtualBoxのHost Only+NATモードのネットワーク構成は参考用です。具体的な内容は...