MySQLでの少し複雑な使用例コード

MySQLでの少し複雑な使用例コード

序文

MySQL の構文は誰にとっても難しいものではないと思いますが、この記事では主に MySQL の複雑な使用方法に関するいくつかの関連コンテンツを共有します。この記事を通じて、誰もが MySQL をより深く理解できるようになると信じています。一緒に詳細な紹介を見てみましょう。

1対多のデー​​タは1行に表示されます

GROUP_CONCAT(式)

1. 関係するテーブル関係: 教師テーブル、教師_subject_rel テーブル (教師が教えることができる科目のテーブル)、主題テーブル
2. ビジネス シナリオ: すべての教師番号 (teacher_no) と科目名 (subject_name) を取得する必要があります。 &nbsp 教師テーブル (teacher) と科目 (teacher_subject_rel) は 1 対多の関係であり、多くの場合、クエリには同じ教師の複数のレコードが表示されます。私たちは、教師ごとに1つのデータポイントを取得し、それを1つにまとめたいと考えています。

1. 基本的な文法

group_concat( [DISTINCT] 接続するフィールド [Order BY フィールドのソート ASC/DESC] [Separator 'Separator'] )

2. 例

選択
 t.teacher_id を「教師ID」として、
 t.teacher_no '教師番号',
 (
 選択
  GROUP_CONCAT(s.件名)
 から
  教師科目関係 tsr
 LEFT JOIN `subject` s ON tsr.subject_id = s.subject_id
 どこ
  t.教師ID = tsr.教師ID
) AS '主語'
から
 教師

サブクエリ、クエリ一時テーブル、EXISTS

選択
 *
から
 (
  選択
   o.id、
   o.学生の意図ID、
   s.NAME、
   s.エリアID、
   a.エリア名、
   s.試験年、
   o.ステータス、
   ケースo. 状況
  '1'の場合
   「提出待ち」
  '2'の場合
   「割り当てられる」
  '3'の場合
   「完了」
  '4'の場合
   '処理'
  ENDステータス名、
  CASE o.緊急度
 '1'の場合
  '普通'
 '2'の場合
  '緊急'
 '3'の場合
  '緊急'
 END 緊急度名、
 o.緊急度、
 o.更新時間、
 (
  選択
   最初のレッスンの時間
  から
   jx_戦略
  どこ
   jx_lesson_plan_order_id = o.id
  (2, 7)のステータス
  かつ、最初のレッスン時間 > 現在()
  注文する
   初回レッスン ASC
  制限 1
 ) 初めての場合、
 (
  選択
   取引ユーザーID
  から
   jx_戦略
  どこ
   jx_lesson_plan_order_id = o.id
  ステータス <> 7
  かつ、取引ユーザーID <> 0
  注文する
   id の説明
  制限 1
 ) 取引ユーザーID
から
 jx_レッスンプランの順序
LEFT JOIN 学生 s ON s.student_intention_id = o.student_intention_id
LEFT JOIN エリア a ON s.area_id = a.id
どこ
 o.ステータス <> 1
かつ s.phone = '18501665888'
かつ o.emergency_degree = 1
かつo.STATUS = 2
かつ s.exam_year = '2015'
かつ o.update_time >= '2018-08-14 20:28:55'
かつ o.update_time <= '2018-08-14 20:28:55'
 ) として
どこ
 1 = 1
かつ a.deal_user_id = 145316
かつ、a.first_time >= '2018-08-17 00:00:00'
かつ、a.first_time <= '2018-08-30 00:00:00'
そして存在する(
 選択
  *
 から
  jx_strategy js
 どこ
  js.jx_lesson_plan_order_id = a.id
 js.STATUS IN (2, 7) と
 js.subject_id が (2, 3) である
)
注文する
 a.update_time DESC
制限 0、
 10

関連する変数の条件変更を更新

1. 関係するテーブル関係: user_info テーブルの id_number (ID 番号)、teacher テーブルの birth フィールド、および関連関係 user_id = teacher_id
2. ビジネスシナリオ: ユーザーのIDカードの生年月日を取得し、生年月日フィールドの生年月日を更新する

更新教師t INNER JOIN (

t.teacher_id、t.birth、u.id_number、CONCAT(SUBSTRING(u.id_number、7、4)、'-'、SUBSTRING(u.id_number、11、2)、'-'、SUBSTRING(u.id_number、13、2)) を birth1、u.reg_date、t.exit_time として teacher t から選択します。
内部結合 user_info u ON u.user_id = t.teacher_id

) info.teacher_id = t.teacher_id の情報
t.birth = info.birth1 を設定します。
WHERE info.reg_date > '2018-08-20 00:00:00' かつ info.id_number が NULL ではなく、(info.birth が NULL または t.birth = '') かつ t.is_train = 1

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • 複雑な関連付けの状況でMySQLが実行できる最適化
  • Mysql のいくつかの複雑な SQL ステートメント (重複行のクエリと削除)
  • MySQLの「ON DUPLICATE KEY UPDATE」構文の詳細な分析
  • MySQLの最も基本的なSQL構文/ステートメント
  • MySQLとOracleの構文の違いの詳細な比較
  • Mysql の Join 構文とパフォーマンスの最適化の簡単な分析
  • MySQL ALTER構文の使い方
  • MySQLのprepareステートメントのSQL構文
  • MySQL 高度な SELECT 構文
  • MySQL SQL 構文リファレンス

<<:  vue-cropperプラグインは、画像キャプチャとアップロードコンポーネントのカプセル化を実現します。

>>:  Dockerは1行のコマンドでFTPサービス構築の実装を完了します

推薦する

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...

ページ切り替え効果を実現するJSコード

この記事の例では、ページ切り替え効果を実現するためのJSコードの具体的なコードを参考までに共有してい...

MySQL 8.0 のメモリ消費の詳細な分析

目次1. innodb_buffer_pool_size 2. innodb_log_buffer_...

MySQL データベースの詳細な説明 - 複数テーブル クエリ - 内部結合、外部結合、サブクエリ、相関サブクエリ

複数テーブルクエリ複数のテーブルから関連するクエリ結果を取得するには、単一の SELECT ステート...

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

効果:スライドショーが一方向に動く場合、各画像のサイズ、位置、透明度、レベルを変更する必要があります...

MYSQL SERVER のログファイルを縮小する方法

トランザクション ログには、関連するデータベースに対する操作が記録され、データベースの回復に関連する...

JDKネイティブスレッドプールのバグを修正するTomcatの実装原理

処理能力と同時実行性を向上させるために、Web コンテナは通常、リクエストを処理するタスクをスレッド...

Nginx における accept lock の仕組みと実装の詳細な説明

序文nginx はマルチプロセス モデルを使用します。リクエストが届くと、システムはプロセスをロック...

MySQL および Oracle のバッチ挿入 SQL の一般的な記述例

目次例えば:一般的な執筆:要約する例えば:次に、データベースのUSERテーブルにUserオブジェクト...

Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)

1. 公式ウェブサイトから 64 ビットの zip ファイルをダウンロードします。 2. インスト...

DockerはRedisをインストールし、操作用のビジュアルクライアントを導入します

1 はじめにRedis 、 ANSI C言語で開発されたKey-Valueベースの高性能NoSQLデ...

Vue シンプル登録ページ + 確認コード送信機能の実装例

目次1. エフェクト表示2. 検証コードとメールプッシュ管理の強化(後述のブログを参照) 3. 一般...

JS初心者が配列を処理するための実践的な方法のまとめ

join() メソッド: 指定された区切り文字を使用して配列内のすべての要素を文字列に接続します。例...

Linux ipcsコマンドの使用

1. コマンドの紹介ipcs コマンドは、Linux のプロセス間通信機能の状態を報告するために使用...