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

推薦する

IE6のバグと修正は予防戦略です

元記事:究極の IE6 チートシート: 25 以上の Internet Explorer 6 のバグ...

MySQL インデックスの最適化: ページング探索の詳細な紹介

目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...

JavaScript で配列の最大値と最小値を実装する 6 つの方法

配列[1,8,5,4,3,9,2]が与えられた場合、配列の最大値9と最小値1を取得するアルゴリズムを...

Chromeブラウザの自動パスワード保存プロンプト機能を無効にする方法

注: Web 開発では、フォームに autocomplete="off" を追加...

IDEA で mysql8.0.3 と mybatis-generator を使用する際に発生するバグ

1. プラグインを追加し、pomファイルの下に次の設定を追加します。 <!-- mybatis...

ユーザーエクスペリエンスの76の経験ポイントの要約

ウェブサイト体験の分類1. 感覚体験:快適性を重視した視聴覚体験をユーザーに提供します。 2. イン...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

Docker コンテナのデプロイの試み - マルチコンテナ通信 (node+mongoDB+nginx)

その理由はモッカー プラットフォームを導入したかったので、友人の勧めで既成のプロジェクト api-m...

MySQL サービス 1067 エラーの解決策: mysql 実行可能ファイルのパスを変更する

今日、MySQLサービス1067エラー問題に遭遇しました。システムアカウントを使用するように設定して...

Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル

1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...

タイムスタンプの差を計算するSQLメソッド

タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...

MySQL テーブルパーティションの使用法と基本原理の詳細な説明

目次パーティションテーブルとはパーティションテーブルの適用シナリオパーティションテーブルの制限パーテ...

JS の配列トラバーサルについて、一般的なループをいくつ知っていますか?

序文基本的なデータ構造として、配列とオブジェクトはさまざまなプログラミング言語で重要な役割を果たしま...

Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する

Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...