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

推薦する

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...

JavaScriptの浅いコピーと深いコピーについての簡単な説明

目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...

AngularJSループオブジェクトプロパティで動的列を実装するアイデアの詳細な説明

動的な列を実現するための Angularjs ループ オブジェクト プロパティ利点: オブジェクトを...

html-webpack-plugin' を使用してメモリ内に HTML ページ プラグインを生成します。

webpackjs ファイルをパッケージ化するときに、次に示すように、index.html インタ...

CentOS 7 に MySQL 8 をインストールするための詳細なチュートリアル

準備するこの記事の環境情報: ソフトウェアバージョンセントOSセントOS7.4マイグレーション8.0...

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

WeChatアプレットがシンプルな計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

Ubuntu 20.04にROS Noeticをインストールする方法

免責事項:プロジェクトでは ROS 環境を使用する必要があるため、これは Ubuntu 20.04 ...

MySQL 8.0 の binlog の詳細な説明

1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...

MySQLトリガーの概念、原理、使用法の詳細な説明

この記事では、例を使用して、MySQL トリガーの概念、原則、および使用方法を説明します。ご参考まで...

Ubuntu 20.04にvncserverをインストールする方法

Ubuntu 20.04は2020年4月に正式にリリースされました。本日、ミラーシステムを正式にイン...

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

Zabbix で Windows のパフォーマンスを監視する方法

背景情報最近、Windows パフォーマンスに関する本を読み直しています。以前は SCOM 監視を使...

サイト全体を灰色にするCSSコードのまとめ

国務院は本日、新型コロナウイルス感染症との闘いで殉教した方々と犠牲者に対し、全国各民族人民の深い哀悼...

CSSページ下部固定を実現する8つの方法の詳細な説明

ページを書いているときに、ページの内容が小さくてフッターがページの真ん中に留まってしまうといった状況...