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サービス構築の実装を完了します

推薦する

MySQL 8.0.13 解凍版のインストールと設定方法のグラフィックチュートリアル

1. インストール1. MySQLをダウンロードするダウンロードアドレス: リンクアドレスブラウザで...

CSS ロリポップを描くサンプルコード

背景: 毎日少しずつ進歩し、少しずつ積み重ねていけば、どんどん良くなっていきますコード: <!...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

セマフォによるTomcatの異常終了の解決方法

最近はビッグデータで遊んでいます。友人が私のところに来て、オンラインの Tomcat が不可解に終了...

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

MySQLトリガーの使用と注意すべき点

目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...

Dockerコンテナの構築と実行のプロセスの詳細な説明

イメージをプルし、コンテナを作成してコンテナを実行するだけです。 docker run -d --r...

MySQL DML言語操作例

追加説明、外部キー: 外部キーを使用しないでください。すべての外部キーの概念はアプリケーション層で解...

MySQL 使用仕様の概要

1. InnoDBストレージエンジンを使用する必要がありますCPU と IO のパフォーマンスが向上...

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...

macOS での MySQL 8.0.16 のインストールと設定のグラフィック チュートリアル

この記事では、macOSでのMySQL 8.0.16のインストールと設定のチュートリアルを参考までに...

AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

最近何もすることがないのでCSSをいじっていますより良いアニメーションライブラリTweenMaxを見...

インスピレーションを得るための7つのクールなダイナミックウェブサイトデザイン

デザインの分野では、毎年さまざまなデザインのトレンドや流行があります。たとえば、近年のレスポンシブデ...

vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

導入この章では、主に Linux で FTP サーバーを構築するプロセスを紹介します。習得すべき重要...