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

So verwenden Sie Docker+DevPi zum Erstellen einer lokalen PyPi-Quelle

Vor einiger Zeit musste ich für die Entwicklung h...

JavaScript zum Implementieren einer dynamischen Digitaluhr

In diesem Artikel finden Sie den spezifischen Cod...

Ubuntu 20.04 – Bestes Konfigurationshandbuch (unverzichtbar für Anfänger)

1. Systemkonfiguration 1. Deaktivieren Sie das Su...

Detailliertes Beispiel zum Entfernen doppelter Daten in MySQL

Detailliertes Beispiel zum Entfernen doppelter Da...

So lösen Sie das Problem der Randüberlappung

1. Zunächst müssen Sie wissen, was den vertikalen ...

Ein paar Dinge zu favicon.ico (am besten im Stammverzeichnis ablegen)

Öffnen Sie eine beliebige Webseite, zum Beispiel ...

Vor- und Nachteile des Tabellenlayouts und warum es nicht empfohlen wird

Nachteile von Tabellen 1. Tabellen nehmen mehr Byt...

Zusammenfassung der Vue3-Slot-Nutzung

Inhaltsverzeichnis 1. Einführung in den V-Slot 2....

Zusammenfassung der Verwendung von clipboard.js

Inhaltsverzeichnis (1) Einleitung: (2) Zum Kopier...

Kurze Analyse der verschiedenen Versionen des mysql.data.dll-Treibers

Hier ist der MySQL-Treiber mysql.data.dll Beachte...