SQL 入門学習: UNION キーワードの使用法の簡単な分析

青灯夜游
リリース: 2022-02-21 10:55:22
転載
5671 人が閲覧しました

開発プロセスでは、複数のクエリ結果を直接表示することがよくありますが、どのようにクエリを実行すればよいでしょうか?この記事は SQL の学習に関するものです。SQL の UNION キーワードとその使用方法を見てみましょう。皆さんのお役に立てれば幸いです。

SQL 入門学習: UNION キーワードの使用法の簡単な分析

#SQL の UNION キーワードは、複数のクエリ条件の結果を表示します。

UNION

UNION の中国語の意味は結合、つまり 2 つ以上の SELECT ステートメントの結果を結合することです。使用上のヒントは次のとおりです。

  • UNION 内の各 SELECT ステートメントには、同じ数の列が必要です。
  • 列には同様のデータ型が必要です。
  • 各 SELECT ステートメント内の列の順序は同じである必要があります。

同じ列数

以下に示すように、前章で紹介したデータをデモ データとして使用します

SQL 入門学習: UNION キーワードの使用法の簡単な分析

テーブル s_user とテーブル s_user_1

CREATE TABLE `s_user` (
  `userid` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `pass_word` varchar(255) DEFAULT NULL,
  `salt` varchar(255) DEFAULT NULL,
  `state` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
ログイン後にコピー

をそれぞれ作成します。テスト データは次のとおりです。

INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1, '小米', '小米', '123123', '123', '1', '2022-02-10 19:48:43');
INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43');

INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1, '小红', '小红', '123123', '123', '1', '2022-02-10 19:48:43');
INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2, '小黄', '小黄', '123123', '123', '1', '2022-02-10 19:48:43');
ログイン後にコピー

UNION 内の各 SELECT ステートメントは同じ番号を持つ必要があります。 of columns: query first SQL

SELECT * FROM `s_user` UNION SELECT * FROM `s_user_1`
ログイン後にコピー

with the 同じカラムをすべてのカラムにクエリすると、以下のような実行結果になることがわかります。

SQL 入門学習: UNION キーワードの使用法の簡単な分析

最初のクエリがすべての列に対するもので、2 番目のクエリが 3 つのフィールドに対するものである場合、クエリの結果はどうなりますか? 次に、次の SQL を実行します:

エラー使用法

SELECT * FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`
ログイン後にコピー

SQL 入門学習: UNION キーワードの使用法の簡単な分析

##エラー メッセージ: 異なる数の列をクエリするために使用された SELECT ステートメント

正しい使用方法

SELECT userid,name,pass_word  FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`
ログイン後にコピー

SQL 入門学習: UNION キーワードの使用法の簡単な分析データ型

前述のように、複数のクエリの列の数は次のとおりです。同じである場合、クエリされる列の数は同じですが、クエリフィールドのデータ型が異なる場合、正常に処理できますか?次に、s_user クエリの pass_word を create_time に置き換えてクエリします。問い合わせたら見れますよ。 SQL クエリでは、列のデータ型は関係ありません。もちろん、実際の業務では異なるタイプに設定されることはありません。

SELECT userid,name,create_time  FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`
ログイン後にコピー

SQL 入門学習: UNION キーワードの使用法の簡単な分析列の順序

UNION キーワードを使用してクエリを実行する場合、それは列の順序に関係しますか? 上で見たように、次のような可能性があります。列の順序に関係しますが、無関係かもしれないので、テストしてみましょう。実行結果は列の順序とは関係がないことがわかります。実際の業務では複数のクエリが結合されるため、プロジェクト内で定義するカラムの順序は一貫している必要があります。

SELECT create_time,userid,name  FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`
ログイン後にコピー

SQL 入門学習: UNION キーワードの使用法の簡単な分析UNION と UNION ALL の違い

UNION と UNION ALL の違いをテストするには、[Xiaobi] をデータテーブル s_user_1 とそれをテーブル s_user [Xiaobi] と比較するのは両方ともデータベースに保存されています。この 2 つの結果の違いは何ですか?

INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (3, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43');
ログイン後にコピー

SQL 入門学習: UNION キーワードの使用法の簡単な分析最初に実行:

SELECT user_name,name,pass_word,salt
FROM `s_user` UNION SELECT user_name,name,pass_word,salt FROM `s_user_1`
ログイン後にコピー

実行結果:

SQL 入門学習: UNION キーワードの使用法の簡単な分析#もう一度実行

SELECT user_name,name,pass_word,salt
FROM `s_user` UNION ALL SELECT user_name,name,pass_word,salt FROM `s_user_1`
ログイン後にコピー

実行結果:

SQL 入門学習: UNION キーワードの使用法の簡単な分析 UNION関連付けでは重複項目が削除されるのに対し、UNION ALLでは重複データは削除されずにすべての値がクエリされることがわかります。

結論

以上が SQL での UNION キーワードの使用法です。読んでいただきありがとうございます。気に入っていただければ幸いです。役に立った場合は、いいね! や収集をお願いしますそれ。不備がある場合はコメントして修正してください。次回お会いしましょう。

推奨学習:

mysql ビデオ チュートリアル

以上がSQL 入門学習: UNION キーワードの使用法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
sql
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート