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 einen Gamecontroller in CocosCreator

Inhaltsverzeichnis 1. Szenenlayout 2. Fügen Sie e...

Eine kurze Analyse der startReactApplication-Methode von React Native

In diesem Artikel haben wir den Startvorgang von ...

Detaillierte Schritte zur Installation der MySQL 5.6 X64-Version unter Linux

Umfeld: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-gli...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

Lösen Sie das Problem, dass die mit nginx erhaltene IP-Adresse 127.0.0.1 ist

Holen Sie sich das IP-Tool importiere lombok.exte...

Einführung in Linux-Umgebungsvariablen und Prozessadressraum

Inhaltsverzeichnis Linux-Umgebungsvariablen und P...

JavaScript zum Erzielen eines Taobao-Produktbild-Umschalteffekts

JavaScript-Umschalteffekt für Bekleidungsalben (ä...

Web-Theorie: Bringen Sie mich nicht zum Nachdenken über Lesehinweise

Kapitel 1 <br />Das wichtigste Prinzip, um ...

So schreiben Sie Objekte und Parameter, um Flash in Firefox abzuspielen

Code kopieren Der Code lautet wie folgt: <Obje...