MySQL マルチテーブル共同クエリ操作例の分析

MySQL マルチテーブル共同クエリ操作例の分析

この記事では、MySQL のマルチテーブル共同クエリ操作について説明します。ご参考までに、詳細は以下の通りです。

MySQL マルチテーブル ジョイント クエリは、MySQL データベースのクエリ方法です。以下では、参考と学習のために、MySQL マルチテーブル ジョイント クエリの構文を紹介します。

MySQL マルチテーブル共同クエリ構文:

次のようにコードをコピーします
SELECT * FROM insert table LEFT JOIN main table ON t1.lvid=t2.lv_id select * from mytable,title where table name 1.name=table name 2.writer;

MySQL バージョン 4.0 以降の場合は、 UNIONを使用してクエリを実行します。例は次のとおりです。

SELECT `id`, `name`, `date`, '' AS `type` FROM table_A WHERE 条件ステートメント...
 連合
SELECT `id`, `name`, `date`, 'Not Completed' AS `type` FROM table_B WHERE 条件文...
 ORDER BY `id` LIMIT num;

MySQL バージョンが 4.0 未満の場合、一時テーブルを作成する必要があります。これは 3 つの手順に分かれています。例は次のとおりです。

ステップ1:一時テーブルtmp_table_nameを作成し、関連するレコードをtable_Aに挿入します。

次のようにコードをコピーします
$sql = "CREATE TEMPORARY TABLE tmp_table_name SELECT `id`, `name`, `date`, 'completed' AS `type` FROM table_A WHERE 条件文... ";

ステップ2: table_Bから関連レコードを取得し、一時テーブルtmp_table_nameに挿入します。

次のようにコードをコピーします
INSERT INTO tmp_table_name SELECT `id`, `name`, `date2` AS `date`, 'Not Completed' AS `type` FROM table_B WHERE 条件文...

ステップ3:一時テーブルtmp_table_nameからレコードを取得する

SELECT * FROM tmp_table_name ORDER BY id DESC

union、order by、limitの違いの分析

コード例:

テーブル「test1」を作成します(
 `id` int(10) 符号なし NOT NULL AUTO_INCREMENT,
 `name` varchar(20) NOT NULL,
 `desc` varchar(100) NOT NULL,
 主キー (`id`)
) エンジン=InnoDB デフォルト文字セット=utf8

1. 次のクエリはエラーを報告します: [Err] 1221 - UNIONとORDER BYの使い方が間違っています

コード例:

select * from test1 where name like 'A%' order by name
連合
select * from test1 where name like 'B%' order by name

変更後:

コード例:

test1 から * を選択し、名前が 'A%' のような場合
連合
select * from test1 where name like 'B%' order by name

括弧のない結合では、order by は 1 つしか使用できないことに注意してください (結合の両側の order by 列の名前が異なる場合はどうなるか考えてみてください)。これにより、結合後に結果セットが並べ替えられます。

変更後:

コード例:

(test1 から * を選択し、名前が 'A%' のような名前で並べ替えます)
連合
(test1 から * を選択し、名前が 'B%' のような名前で並べ替えます)

これも可能。2 つの order by ステートメントは、union の前に実行されます。

2. 同様に

コード例:

test1 から * を選択、名前は 'A%' で制限は 10 です
連合
test1 から * を選択、名前は 'B%' のように制限 20

は以下と同等です:

コード例:

(test1 から * を選択、名前が 'A%' のような場合、制限は 10)
連合
(test1 から * を選択、名前が 'B%' のような場合) 制限 20

つまり、後者の制限は、結合後の選択ではなく、結合後の結果セットに適用されます。
期待される結果を得るために括弧で囲むこともできます。

3. UNIONとUNION ALLの違い

Union は、Union の両側の選択結果セット内の重複行を除外しますが、Union All は重複行を除外しません。

コード例:

(test1 から * を選択、名前が 'A%' のような場合、制限は 10)
連合
(test1 から * を選択、名前が 'B%' のような場合、制限は 20)

年齢グループ分析のための複雑な SQL ステートメントを試してみましょう。

(
 選択
  '5~19' は `年齢` です。
  SUM(`印象`) AS 印象、
  SUM(`クリック`) AS クリック、
  sum(`cost`) AS コスト
 から
  `広告グループ年齢レポート`
 どこ
  (
   (
    (`年齢` <= 19)
    AND (`adgroup_id` = '61')
   )
   AND (`日付` >= '2015-11-22')
  )
 AND (`日付` <= '2017-02-20')
)
連合
 (
  選択
   '20~29' は `年齢` です。
   SUM(`印象`) AS 印象、
   SUM(`クリック`) AS クリック、
   sum(`cost`) AS コスト
  から
   `広告グループ年齢レポート`
  どこ
   (
    (
     ((`年齢` <= 29) AND(`年齢` >= 20))
     AND (`adgroup_id` = '61')
    )
    AND (`日付` >= '2015-11-22')
   )
  AND (`日付` <= '2017-02-20')
 )
連合
 (
  選択
   '30~39' は `年齢` です。
   SUM(`印象`) AS 印象、
   SUM(`クリック`) AS クリック、
   sum(`cost`) AS コスト
  から
   `広告グループ年齢レポート`
  どこ
   (
    (
     ((`年齢` <= 39) AND(`年齢` >= 30))
     AND (`adgroup_id` = '61')
    )
    AND (`日付` >= '2015-11-22')
   )
  AND (`日付` <= '2017-02-20')
 )
連合
 (
  選択
   '40~49' は `年齢` です。
   SUM(`印象`) AS 印象、
   SUM(`クリック`) AS クリック、
   sum(`cost`) AS コスト
  から
   `広告グループ年齢レポート`
  どこ
   (
    (
     ((`年齢` <= 49) AND(`年齢` >= 40))
     AND (`adgroup_id` = '61')
    )
    AND (`日付` >= '2015-11-22')
   )
  AND (`日付` <= '2017-02-20')
 )
連合
 (
  選択
   '50~59' は `年齢` です。
   SUM(`印象`) AS 印象、
   SUM(`クリック`) AS クリック、
   sum(`cost`) AS コスト
  から
   `広告グループ年齢レポート`
  どこ
   (
    (
     ((`年齢` <= 59) AND(`年齢` >= 50))
     AND (`adgroup_id` = '61')
    )
    AND (`日付` >= '2015-11-22')
   )
  AND (`日付` <= '2017-02-20')
 )

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQL データベースの集計クエリと結合クエリ操作
  • MySQL初心者はグループ化や集計クエリの煩わしさから解放されます
  • MySQL ジョイントクエリ UNION と UNION ALL の使用法の紹介
  • Mysql の 2 つのテーブル間の結合クエリの 4 つの状況の概要
  • MySQL マルチテーブルジョイントクエリ効率の詳細な分析と最適化
  • いくつかのMySQLジョイントクエリの一般的な説明
  • MySQL 集計クエリと結合クエリ操作の例

<<:  Ubuntu インストール時にブラックスクリーンが表示される場合の解決策 (3 種類)

>>:  jsはショッピングサイトの虫眼鏡機能を実現します

推薦する

docker を使用して hbase をデプロイする方法

スタンドアロンの hbase について、まずは説明しましょう。 Dockerをインストールするまず ...

VMwareがLinuxシステムをインストールして起動した後に黒い画面が表示される問題を解決する

1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...

http.server に基づく LAN サーバーの構築プロセスの分析

皆さんはこのような状況に遭遇したことがあるでしょうか。プロジェクトや研究開発を行う際に、緊急にファイ...

HTML チュートリアル: よく使われる HTML タグのコレクション (5)

関連記事:初心者が学ぶ HTML タグ (4)導入された HTML タグは、必ずしも XHTML 仕...

React diffアルゴリズムソースコード分析

目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...

Docker実行コンテナが作成状態にある問題についての簡単な説明

最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...

MySQL max_allowed_pa​​cket 設定

max_allowed_pa​​cket は、受け入れるパケットのサイズを設定するために使用される ...

HTML でフォントの色を設定する方法と、PS を使用して HTML で正確なフォントの色を取得する方法

1. HTMLフォントカラー設定HTML では、フォント タグを使用してフォント コンテンツの色を設...

テーブル切り替えのための JavaScript プラグインのカプセル化

この記事では、テーブル切り替えプラグインを実装するためのJavaScriptのカプセル化コードを参考...

Linuxのseqコマンドを使用して数字のシーケンスを生成します(推奨)

Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...

HTML5 と HTML4 の 10 の主な違い

HTML5 は HTML 標準の次のバージョンです。ますます多くのプログラマーが、Web サイトの構...

WeChat アプレットのシンプルなログイン ページの実装 (ソース コード付き)

目次1. 上の写真2. ユーザーが存在しない3. コードをアップロードする1. 上の写真 2. ユー...

mysql57サービスが突然消えた問題をすぐに解決する

1つ、 G:\MySQL\MySQL Server 5.7\bin> mysqld --ini...

MySQL をインストールするときに初期パスワードを忘れた場合のシンプルで効果的な解決策

MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...