概要 連合 接続データセットキーワードは、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 をインストールするチュートリアル
まずエラーコードを見てみましょう。 html: <テーブルボーダー="1"...
この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...
ご存知のとおり、コンピューターには 2 種類の画像があり、1 つはビットマップ、もう 1 つはベクタ...
新しい CSS プロパティ contain を紹介する前に、読者はページの再描画と再配置が何であるか...
主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...
<br />当サイトのオリジナルコンテンツですので、転載の際は出典を123WORDPRE...
目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...
目次JavaScript のインポート1. 内部ラベル2. 外部紹介基本的な構文データ型番号弦ブール...
簡単な説明<br />IE6および7では、一般的なaタグ(HTMLで記述され、DOM操作...
目次js 呼び出しメソッドアンドロイド1.jsはネイティブを呼び出す2. ネイティブコールjs iO...
目次遅延読み込みCSS スタイル: HTML部分:スクリプト部分:要約する遅延読み込み名前の通り、私...
2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...
目次1. typeof演算子2. インスタンスオブ演算子3. typeof と instanceof...
1.1 ストレージエンジンの概要 1.1.1 ファイルシステムストレージファイル システム: オペ...
背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...