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

推薦する

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

XHTML タグのネスト規則の分析

XHTML 言語では、ul タグに li が含まれ、dl タグに dt と dd が含まれることは誰...

Linux サーバーに SSH パスワードなしでログインする方法

テスト サーバーにログインするたびに、必ず ssh ログインのパスワードを入力する必要があります。ロ...

MySql キャッシュ クエリの原理とキャッシュ監視およびインデックス監視の概要

クエリキャッシュ1. クエリキャッシュの動作原理クエリ ステートメントを実行する前に、MySQL は...

ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

効果 HTML を実装するには、まずクリーンな HTML ページを準備し、ノードを記述します。 &l...

Linux Cron によるパラメータ付き PHP コードのスケジュール実行

1. 引き続き PHP スクリプトを使用して実行します。コマンドラインに入力: php /home/...

MySQL: データの整合性

データ整合性は、エンティティ整合性、ドメイン整合性、参照整合性に分けられます。参照整合性:参照整合性...

Mac MySQL のルートパスワードをリセットするチュートリアル

免責事項:このパスワード リセット方法は、Homebrew によってインストールされた MySQL ...

MySQL の結合テーブルにインデックスを作成する方法

この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

CocosCreator クラシック エントリー プロジェクト flappybird

目次開発環境ゲームエンジンのコンセプトCocos Creatorについてプロジェクト構造コード編集環...

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

Tomcat のメモリ構成の正しい姿勢についての簡単な説明

1. 背景多くのブログや記事を読みましたが、JVM のメモリ割り当て方法に関する包括的な記事は見つか...

Web インタビュー Vue カスタム コンポーネントと呼び出しメソッド

輸入:プロジェクトの要件により、同じコードの一部をコンポーネントにカプセル化し、必要な場所にインポー...