Einige etwas komplexere Verwendungsbeispielcodes in MySQL

Einige etwas komplexere Verwendungsbeispielcodes in MySQL

Vorwort

Ich glaube, dass die Syntax von MySQL nicht für jeden schwierig ist, aber dieser Artikel enthält hauptsächlich einige verwandte Inhalte zur komplexen Verwendung von MySQL. Ich glaube, dass dieser Artikel jedem ein tieferes Verständnis von MySQL vermitteln wird. Schauen wir uns gemeinsam die ausführliche Einführung an.

Eins-zu-viele-Daten werden in einer Zeile angezeigt

GROUP_CONCAT(Ausdruck)

1. Beteiligte Tabellenbeziehungen: Lehrertabelle, Lehrer_Fach_rel-Tabelle (Tabelle der Fächer, die Lehrer unterrichten können), Fachtabelle
2. Geschäftsszenario: Sie müssen alle Lehrernummern (teacher_no) und Fachnamen (subject_name) abrufen. &nbsp Zwischen der Lehrertabelle (teacher) und dem Fach (teacher_subject_rel) besteht eine Eins-zu-viele-Beziehung, und in einer Abfrage erscheinen häufig mehrere Datensätze desselben Lehrers. Wir hoffen, für jeden Lehrer einen Datenpunkt zu erhalten und ihn zu einem

1. Grundlegende Grammatik

group_concat( [DISTINCT] Zu verbindende Felder [Order BY Sortierung der Felder ASC/DESC] [Trennzeichen 'Trennzeichen'] )

2. Beispiel

WÄHLEN
 t.teacher_id als „Lehrer-ID“,
 t.teacher_no 'Lehrernummer',
 (
 WÄHLEN
  GROUP_CONCAT(s.Betreffname)
 AUS
  Lehrerfach tsr
 LEFT JOIN `Betreff` s ON tsr.subject_id = s.subject_id
 WO
  t.lehrer_id = tsr.lehrer_id
) als „Betreff“
AUS
 Lehrer 

Unterabfrage, Abfrage temporärer Tabelle, EXISTS

Beispiel

WÄHLEN
 *
AUS
 (
  WÄHLEN
   o.id,
   o.student_intention_id,
   s.NAME,
   s.Bereichs-ID,
   a.Bereichsname,
   s.Prüfungsjahr,
   o.STATUS,
   FALL oder STATUS
  WENN '1' DANN
   „Ausstehende Einreichung“
  WENN '2' DANN
   „Wird noch zugewiesen“
  WENN '3' DANN
   'Vollendet'
  WENN '4' DANN
   'Verarbeitung'
  ENDE statusName,
  FALL o.Notfallgrad
 WENN '1' DANN
  'Normal'
 WENN '2' DANN
  'dringend'
 WENN '3' DANN
  'Dringend'
 ENDE Notfall-Abschlussname,
 o.Notfallgrad,
 o.Aktualisierungszeit,
 (
  WÄHLEN
   erste_Unterrichtsstunde
  AUS
   jx_strategie
  WO
   jx_lesson_plan_order_id = o.id
  UND STATUS IN (2, 7)
  UND erste_Unterrichtszeit > jetzt()
  BESTELLEN BIS
   erste_Unterrichtsstunde ASC
  GRENZE 1
 ) AS erstes_mal,
 (
  WÄHLEN
   deal_benutzer_id
  AUS
   jx_strategie
  WO
   jx_lesson_plan_order_id = o.id
  UND STATUS <> 7
  UND deal_user_id <> 0
  BESTELLEN BIS
   ID DESC
  GRENZE 1
 ) AS deal_user_id
AUS
 jx_Unterrichtsplan_Bestellung
LEFT JOIN Student s ON s.student_intention_id = o.student_intention_id
LEFT JOIN Bereich a ON s.area_id = a.id
WO
 o.STATUS <> 1
UND s.phone = '18501665888'
UND o.Notfallgrad = 1
UND o.STATUS = 2
UND s.Prüfungsjahr = '2015'
UND o.update_time >= '2018-08-14 20:28:55'
UND o.update_time <= '2018-08-14 20:28:55'
 ) Als
WO
 1 = 1
UND a.deal_user_id = 145316
UND a.first_time >= '2018-08-17 00:00:00'
UND a.first_time <= '2018-08-30 00:00:00'
UND EXISTIERT (
 WÄHLEN
  *
 AUS
  jx_strategie js
 WO
  js.jx_lesson_plan_order_id = eine.id
 UND js.STATUS IN (2, 7)
 UND js.subject_id IN (2, 3)
)
BESTELLEN BIS
 a.update_time DESC
GRENZE 0,
 10

update Zugehörige Variable bedingte Änderung

1. Beteiligte Tabellenbeziehungen: id_number (ID-Nummer) in der Tabelle user_info, Feld „Geburt“ in der Tabelle teacher und die Assoziationsbeziehung user_id = teacher_id
2. Geschäftsszenario: Holen Sie sich das Geburtsdatum auf dem Personalausweis des Benutzers und aktualisieren Sie das Geburtsdatum im Geburtsfeld

UPDATE Lehrer t INNER JOIN (

SELECT 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)) als Geburt1, u.reg_date, t.exit_time von Lehrer t
INNER JOIN user_info u ON u.user_id = t.teacher_id

) Info zu info.teacher_id = t.teacher_id
SET t.Geburt = info.Geburt1
WHERE info.reg_date > '2018-08-20 00:00:00' und info.id_number ist nicht NULL und (info.birth ist NULL oder t.birth = '') und t.is_train = 1

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Einige Optimierungen, die MySQL in komplexen Assoziationssituationen vornehmen kann
  • Mysql, einige komplexe SQL-Anweisungen (Abfragen und Löschen doppelter Zeilen)
  • Detaillierte Analyse der MySQL-Syntax „ON DUPLICATE KEY UPDATE“
  • Die grundlegendsten SQL-Syntax/Anweisungen von MySQL
  • Detaillierter Vergleich der Syntaxunterschiede zwischen MySQL und Oracle
  • Eine kurze Analyse der Mysql Join-Syntax und Leistungsoptimierung
  • So verwenden Sie die MySQL ALTER-Syntax
  • SQL-Syntax für MySQL-Prepare-Anweisung
  • Erweiterte MySQL-SELECT-Syntax
  • MySQL SQL-Syntaxreferenz

<<:  Das Vue-Cropper-Plugin realisiert die Kapselung der Bildaufnahme- und Upload-Komponente

>>:  Docker schließt die Implementierung des FTP-Dienstaufbaus mit einer Befehlszeile ab

Artikel empfehlen

Vue implementiert den Schnittstellen-Gleiteffekt

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript-Quellcode für Elimination

JavaScript zum Erreichen der Quellcode-Download-A...

Lösung für den Fehler bei der MySQL-Remoteverbindung

Ich bin schon einmal auf das Problem gestoßen, da...

Beispiel für die Verwendung der setInterval-Funktion in React

Dieser Artikel basiert auf der Windows 10-Systemu...

Ein tiefer Einblick in JavaScript-Promises

Inhaltsverzeichnis 1. Was ist Promise? 2. Warum g...

Details zum JavaScript-Abschluss

Inhaltsverzeichnis 1. Was ist ein Abschluss? 2. D...

Tutorial zur MySQL-Optimierung: Große Paging-Abfrage

Inhaltsverzeichnis Hintergrund LIMIT-Optimierung ...

Probleme und Lösungen beim Verbinden des Knotens mit der MySQL-Datenbank

Ich habe heute eine neue Version von MySQL (8.0.2...

Detaillierte Erklärung der React-Komponentenkommunikation

Inhaltsverzeichnis Einführung in die Komponentenk...