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 プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

FirefoxでCookieとお気に入りをインポートおよびエクスポートする方法

Firefox は、多くの拡張機能とプラグインを備えた、よく使用されるブラウザです。IE に比べて多...

CentOS6.5 でファイル共有サービス Samba を構築するチュートリアル

Samba サービス:このコンテンツはサンバサービス学習者の参考用ですケースの説明:企業の管理者は、...

JS ベースの Ajax 同時リクエスト制御を実装する方法

目次序文Ajax シリアルおよびパラレルAjaxの同時リクエスト制御のための2つのソリューションPr...

Nginx 正規表現の詳細な説明

Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

Windows 10 での MySQL 8.0.16 のインストールと設定のチュートリアル

この記事では、参考までにMySQL 8.0.16のインストールと設定方法のグラフィックチュートリアル...

Manjaro インストール CUDA 実装チュートリアル分析

昨年末、Thinkpad T450 のデュアルシステムの opensuse を Manjaro に置...

Linux 環境に MySQL 8.0 をインストールするプロセスの紹介

目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...

MySQL 最適化のケーススタディ

1. 背景Youzan の各 OLTP データベース インスタンスには、実行時間が特定のしきい値を超...

JavaScript Alert関数の実行順序の詳細な説明

目次質問分析する解決するAlert() 関数を置き換えるsetTimeOut関数まとめ質問数日前、J...

jsを使用して写真をアップロードする機能を実現する

フロントエンドで画像をアップロードする原理は、入力 type="file" タグ...

nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

Nginxは正規表現を使用して、ワイルドカードドメイン名をディレクトリに自動的に一致させます。 Ng...

React で複数の setStates が何回呼び出されるのでしょうか?

目次1. 2 つの setState を何回呼び出すのですか? 2. 2 つの setState の...

Firefox で Flash を再生するためのオブジェクトとパラメータの書き方

コードをコピーコードは次のとおりです。 <object classid="clsid...

Baota Linux パネル コマンド リスト

目次Pagodaをインストールする管理塔Nginx サービス管理Apache サービス管理MySQL...