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はショッピングサイトの虫眼鏡機能を実現します

推薦する

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

CSS3を使用してプログレスバー効果を実現し、動的にパーセンテージを追加する

プロジェクト中、プログレスバーを実装するために js の requestAnimationFrame...

JavaScript は 3 つの一般的な Web 効果 (オフセット、クライアント、スクロール シリーズ) を実装します。

目次1. 要素オフセットシリーズ2. 要素表示領域クライアントシリーズ3. 要素スクロールシリーズ1...

Mysqlはマスタースレーブ構成とマルチマスターマルチスレーブ構成を実装します

現在シミュレーションしているのは、マスター スレーブ システム (ホスト 1 台とスレーブ 1 台)...

Mysql でよく使用される時間、日付、変換関数の概要

この記事では、主に実際のアプリケーションでよく使用されるMySQLの時刻と日付、および変換関数につい...

Vueデータ割り当て問題の解決

私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...

Maven+Tomcat 基本イメージを構築する Docker の実装

序文Javaプログラミングでは、ほとんどのアプリケーションはMavenに基づいて構築されており、配信...

Vue の一般的な問題と解決策の概要 (推奨)

Vue に限定されず、他の種類の SPA プロジェクトにも当てはまる問題がいくつかあります。 1....

Linux システムのスワップ領域の紹介

スワップ スペースは、オペレーティング システムに関係なく、今日のコンピューティングの一般的な側面で...

MySQL 8.0 の統計が不正確である理由

序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

MySQL 8.0.15 のインストールと設定方法のグラフィック チュートリアル (Windows 10 X64)

最近私が学んでいるのは MySQL の知識なので、MySQL をインストールすることが非常に重要です...

MySQLはこのような更新文を決して書きません

目次序文原因現象なぜ?分析要約する序文今日は、非常に典型的な MySQL の「落とし穴」についてお話...

Windows 10 で MySQL の解凍バージョンをインストールする方法の詳細なグラフィック チュートリアル

MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...