Inhaltsverzeichnis
Fallanalyse
Beispieltabelle für den Fall
1. Periodenvergleichsanalyse
2. Jahresvergleichsanalyse
3. Zusammengesetzte Wachstumsrate
4.不同产品最高和最低销售额
示例表和脚本
Heim Datenbank SQL Detaillierte Erläuterung der SQL-Fensterfunktionen: Verwendung von Ranking-Fensterfunktionen

Detaillierte Erläuterung der SQL-Fensterfunktionen: Verwendung von Ranking-Fensterfunktionen

Sep 08, 2022 pm 05:44 PM
sql

Dieser Artikel vermittelt Ihnen relevantes Wissen über SQL-Server, der hauptsächlich SQL Server-Primärschlüsseleinschränkungen (PRIMÄRSCHLÜSSEL) vorstellt. Der Primärschlüssel ist eine Spalte oder eine Gruppe von Spalten, die jede Zeile in der Tabelle eindeutig identifiziert Werfen wir einen Blick auf die Details unten. Ich hoffe, es wird für alle hilfreich sein.

Detaillierte Erläuterung der SQL-Fensterfunktionen: Verwendung von Ranking-Fensterfunktionen

Empfohlene Studie: „SQL-Tutorial

Grundlagen zu Fensterfunktionen finden Sie im Artikel SQL-Fensterfunktionen

Wertfensterfunktionen können verwendet werden, um Datenzeilen an angegebenen Positionen innerhalb des Fensters zurückzugeben. Gängige Wertefensterfunktionen sind wie folgt:

LAG-Funktion kann die N-te Datenzeile vor der aktuellen Zeile im Fenster zurückgeben. Die LEAD-Funktion kann die N-te Datenzeile nach der aktuellen Zeile im Fenster zurückgeben. Die Funktion FIRST_VALUE kann die erste Datenzeile im Fenster zurückgeben. Die Funktion LAST_VALUE kann die letzte Datenzeile im Fenster zurückgeben. Die NTH_VALUE-Funktion kann die N-te Datenzeile im Fenster zurückgeben.

Unter diesen unterstützen die LAG-Funktion und die LEAD-Funktion keine dynamischen Fenstergrößen. Sie verwenden die gesamte Partition als Analysefenster.

Fallanalyse

Beispieltabelle für den Fall

Die folgende Abfrage verwendet eine Tabelle. In der Tabelle „sales_monthly“ werden Produktverkaufsinformationen gespeichert, „product“ stellt den Produktnamen dar, „ym“ stellt das Jahr und den Monat dar und „amount“ stellt den Verkaufsbetrag dar ( Yuan).

Das Folgende sind einige Daten in der Tabelle:

Das Initialisierungsskript dieser Tabelle finden Sie am Ende des Artikels.

1. Periodenvergleichsanalyse

Das Wachstum der aktuellen Periode im Vergleich zu den Daten der vorherigen Periode bezieht sich beispielsweise auf die Steigerung der Produktverkäufe im Juni 2019 im Vergleich zu den Verkäufen im Mai 2019.

Die folgende Aussage zählt die monatliche Wachstumsrate verschiedener Produkte:

SELECT s.product AS "产品", s.ym AS "年月", s.amount AS "销售额",
 ( 
    (s.amount - LAG(s.amount,1) OVER (PARTITION BY product ORDER BY s.ym))/
    LAG(s.amount,1) OVER (PARTITION BY product ORDER BY s.ym)
 ) * 100 AS "环比增长率(%)"
FROM sales_monthly s
ORDER BY s.product,s.ym
Nach dem Login kopieren

Unter ihnen bedeutet LAG (Betrag, 1), das Verkaufsvolumen der vorherigen Periode zu erhalten, die Option PARTITION NACH bedeutet, nach Produkt aufzuteilen , und die Option ORDER BY bedeutet, nach Produkt zu partitionieren und nach Monat zu sortieren.

Der Umsatz des aktuellen Monats abzüglich des Umsatzes der vorherigen Periode und dann dividiert durch den Umsatz der vorherigen Periode ergibt die monatliche Wachstumsrate.

Die Abfrage gibt die folgenden Ergebnisse zurück:

Januar 2018 ist die erste Periode, daher ist die monatliche Wachstumsrate leer.

Die monatliche Wachstumsrate von „Orange“ betrug im Februar 2018 etwa 0,2856 % ((10183-10154)/10154×100) und so weiter.

2. Jahresvergleichsanalyse

Das Wachstum im Jahresvergleich bezieht sich auf das Wachstum der Daten des aktuellen Zeitraums im Vergleich zum Vorjahr oder zum gleichen Zeitraum in der Geschichte. Zum Beispiel die Verkäufe eines Produkts im Juni 2019 im Vergleich zu den Verkäufen im Juni 2018 gestiegen. Teil.

Die folgende Aussage zählt jeden Monat die jährliche Wachstumsrate verschiedener Produkte:

SELECT s.product AS "产品", s.ym AS "年月", s.amount AS "销售额",
 ( 
    (s.amount - LAG(s.amount,12) OVER (PARTITION BY product ORDER BY s.ym))/
    LAG(s.amount,12) OVER (PARTITION BY product ORDER BY s.ym)
 ) * 100 AS "同比增长率(%)"
FROM sales_monthly s
ORDER BY s.product,s.ym
Nach dem Login kopieren

Dabei stellt LAG (Betrag, 12) das Verkaufsvolumen der 12. Periode vor dem aktuellen Monat dar, also das Verkaufsvolumen des gleichen Monats im letzten Jahr.

PARTITION BY-Option bedeutet Partitionierung nach Produkt, ORDER BY-Option bedeutet Sortierung nach Monat.

Der Umsatzbetrag des aktuellen Monats abzüglich des Umsatzes des gleichen Zeitraums des Vorjahres und dann dividiert durch den Umsatz des gleichen Zeitraums des Vorjahres ergibt die Wachstumsrate im Jahresvergleich.

Die von dieser Abfrage zurückgegebenen Ergebnisse lauten wie folgt:

Für die 12 Datenperioden im Jahr 2018 gibt es keine entsprechende jährliche Wachstumsrate. Die jährliche Wachstumsrate von „Orange“ in Im Januar 2019 lag der Wert bei etwa 9,3067 % ((11099-10154)/10154×100) und so weiter.

Tipps: Die LEAD-Funktion ähnelt der LAG-Funktion, ihr Rückgabeergebnis ist jedoch die N-te Datenzeile nach der aktuellen Zeile.

3. Zusammengesetzte Wachstumsrate

Die zusammengesetzte Wachstumsrate ist das Ergebnis der Division der Daten der N-ten Periode durch die Basisdaten der ersten Periode, der Potenzierung mit N-1 und der Subtraktion von 1.

Angenommen, die Produktverkäufe im Jahr 2018 betragen 10.000, die Produktverkäufe im Jahr 2019 betragen 12.500 und die Produktverkäufe im Jahr 2020 betragen 15.000. Dann wird die durchschnittliche Wachstumsrate dieser beiden Jahre wie folgt berechnet:

Die auf jährlicher Basis berechnete durchschnittliche Wachstumsrate wird Durchschnittliche jährliche durchschnittliche Wachstumsrate genannt, und die auf monatlicher Basis berechnete durchschnittliche Wachstumsrate wird aufgerufen Durchschnittliche monatliche Gesamtwachstumsrate.

Die folgende Abfrage zählt die durchschnittliche monatliche Umsatzwachstumsrate verschiedener Produkte seit Januar 2018:

WITH s (product,ym,amount,first_amount,num) AS (
  SELECT m.product, m.ym, m.amount,
  FIRST_VALUE(m.amount) OVER (PARTITION BY m.product ORDER BY m.ym),
  ROW_NUMBER() OVER (PARTITION BY m.product ORDER BY m.ym)
  FROM sales_monthly m
)
 
SELECT product AS "产品", ym AS "年月",amount AS "销售额",
       (POWER( amount/first_amount, 1.0/NULLIF(num-1,0)) -1)*100 AS "月均复合增长率(%)"
FROM s
ORDER BY product, ym
Nach dem Login kopieren

First definiert einen allgemeinen Tabellenausdruck, in dem FIRST_VALUE(amount) den Umsatz der ersten Periode (201801) zurückgibt. Nun, die ROW_NUMBER Die Funktion gibt die Nummer jeder Periode zurück.

Die POWER-Funktion in der Hauptabfrage wird verwendet, um die Quadratwurzeloperation durchzuführen, die NULLIF-Funktion wird verwendet, um Division-durch-Null-Fehler in der ersten Datenperiode zu behandeln, und die Konstante 1,0 wird verwendet, um Präzisionsverluste zu vermeiden, die durch verursacht werden ganzzahlige Division.

Die von dieser Abfrage zurückgegebenen Ergebnisse lauten wie folgt:

Januar 2018 ist der erste Zeitraum, daher ist die durchschnittliche Wachstumsrate der monatlichen Durchschnittsverkäufe des Produkts leer.

“桔子”2018年2月的月均销售额复合增长率等于它的环比增长率,2018年3月的月均销售额复合增长率等于0.4471%,依此类推。

4.不同产品最高和最低销售额

以下语句统计了不同产品最低销售额、最高销售额以及第三高销售额所在的月份:

  SELECT product AS "产品", ym AS "年月",amount AS "销售额",
  
         FIRST_VALUE(m.ym) OVER (
           PARTITION BY m.product ORDER BY m.amount DESC
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
         ) AS "最高销售额月份",
         
         LAST_VALUE(m.ym) OVER (
           PARTITION BY m.product ORDER BY m.amount DESC
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
         ) AS "最低销售额月份",
         
         NTH_VALUE(m.ym,3) OVER (
           PARTITION BY m.product ORDER BY m.amount DESC
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
         ) AS "第三高销售额月份"
 
  FROM sales_monthly m
  ORDER BY product, ym;
Nach dem Login kopieren

三个窗口函数的OVER子句相同,PARTITION BY选项表示按照产品进行分区,ORDER BY选项表示按照销售额从高到低排序。

以上三个函数的默认窗口都是从分区的第一行到当前行,因此我们将窗口扩展到了整个分区。

该查询返回的结果如下:

“桔子”的最高销售额出现在2019年6月,最低销售额出现在2018年1月,第三高销售额出现在2019年4月。

示例表和脚本

-- 创建销量表sales_monthly
-- product表示产品名称,ym表示年月,amount表示销售金额(元)
CREATE TABLE sales_monthly(product VARCHAR(20), ym VARCHAR(10), amount NUMERIC(10, 2));
 
-- 生成测试数据
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201801',10159.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201802',10211.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201803',10247.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201804',10376.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201805',10400.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201806',10565.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201807',10613.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201808',10696.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201809',10751.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201810',10842.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201811',10900.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201812',10972.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201901',11155.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201902',11202.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201903',11260.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201904',11341.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201905',11459.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('苹果','201906',11560.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201801',10138.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201802',10194.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201803',10328.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201804',10322.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201805',10481.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201806',10502.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201807',10589.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201808',10681.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201809',10798.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201810',10829.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201811',10913.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201812',11056.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201901',11161.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201902',11173.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201903',11288.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201904',11408.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201905',11469.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('香蕉','201906',11528.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201801',10154.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201802',10183.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201803',10245.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201804',10325.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201805',10465.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201806',10505.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201807',10578.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201808',10680.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201809',10788.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201810',10838.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201811',10942.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201812',10988.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201901',11099.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201902',11181.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201903',11302.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201904',11327.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201905',11423.00);
INSERT INTO sales_monthly (product,ym,amount) VALUES ('桔子','201906',11524.00);
Nach dem Login kopieren

推荐学习:《SQL教程

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der SQL-Fensterfunktionen: Verwendung von Ranking-Fensterfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Apr 17, 2024 pm 02:57 PM

HQL und SQL werden im Hibernate-Framework verglichen: HQL (1. Objektorientierte Syntax, 2. Datenbankunabhängige Abfragen, 3. Typsicherheit), während SQL die Datenbank direkt betreibt (1. Datenbankunabhängige Standards, 2. Komplexe ausführbare Datei). Abfragen und Datenmanipulation).

Verwendung der Divisionsoperation in Oracle SQL Verwendung der Divisionsoperation in Oracle SQL Mar 10, 2024 pm 03:06 PM

„Verwendung der Divisionsoperation in OracleSQL“ In OracleSQL ist die Divisionsoperation eine der häufigsten mathematischen Operationen. Während der Datenabfrage und -verarbeitung können uns Divisionsoperationen dabei helfen, das Verhältnis zwischen Feldern zu berechnen oder die logische Beziehung zwischen bestimmten Werten abzuleiten. In diesem Artikel wird die Verwendung der Divisionsoperation in OracleSQL vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Zwei Arten von Divisionsoperationen in OracleSQL In OracleSQL können Divisionsoperationen auf zwei verschiedene Arten durchgeführt werden.

Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2 Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2 Mar 11, 2024 pm 12:09 PM

Oracle und DB2 sind zwei häufig verwendete relationale Datenbankverwaltungssysteme, die jeweils über ihre eigene, einzigartige SQL-Syntax und -Eigenschaften verfügen. In diesem Artikel werden die SQL-Syntax von Oracle und DB2 verglichen und unterschieden und spezifische Codebeispiele bereitgestellt. Datenbankverbindung Verwenden Sie in Oracle die folgende Anweisung, um eine Verbindung zur Datenbank herzustellen: CONNECTusername/password@database. In DB2 lautet die Anweisung zum Herstellen einer Verbindung zur Datenbank wie folgt: CONNECTTOdataba

Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Feb 26, 2024 pm 07:48 PM

Interpretation der dynamischen SQL-Tags von MyBatis: Detaillierte Erläuterung der Verwendung von Set-Tags. MyBatis ist ein hervorragendes Persistenzschicht-Framework. Es bietet eine Fülle dynamischer SQL-Tags und kann Datenbankoperationsanweisungen flexibel erstellen. Unter anderem wird das Set-Tag zum Generieren der SET-Klausel in der UPDATE-Anweisung verwendet, die sehr häufig bei Aktualisierungsvorgängen verwendet wird. In diesem Artikel wird die Verwendung des Set-Tags in MyBatis ausführlich erläutert und seine Funktionalität anhand spezifischer Codebeispiele demonstriert. Was ist Set-Tag? Set-Tag wird in MyBati verwendet

Was bedeutet das Identitätsattribut in SQL? Was bedeutet das Identitätsattribut in SQL? Feb 19, 2024 am 11:24 AM

Was ist Identität in SQL? In SQL ist Identität ein spezieller Datentyp, der zum Generieren automatisch inkrementierender Zahlen verwendet wird. Er wird häufig verwendet, um jede Datenzeile in einer Tabelle eindeutig zu identifizieren. Die Spalte „Identität“ wird oft in Verbindung mit der Primärschlüsselspalte verwendet, um sicherzustellen, dass jeder Datensatz eine eindeutige Kennung hat. In diesem Artikel wird die Verwendung von Identity detailliert beschrieben und es werden einige praktische Codebeispiele aufgeführt. Die grundlegende Möglichkeit, Identity zu verwenden, besteht darin, Identit beim Erstellen einer Tabelle zu verwenden.

Wie nutzt Java den MySQL-Treiber-Interceptor, um zeitaufwändige Berechnungen der SQL-Ausführung zu implementieren? Wie nutzt Java den MySQL-Treiber-Interceptor, um zeitaufwändige Berechnungen der SQL-Ausführung zu implementieren? May 27, 2023 pm 01:10 PM

Hintergrund: Eine der Anforderungen des Unternehmens besteht darin, dass die vorhandene Link-Tracking-Protokollkomponente das Drucken der SQL-Ausführungszeit von MySQL unterstützen muss. Die übliche Methode zur Implementierung der Link-Tracking besteht darin, die von einem Drittanbieter-Framework oder -Tool bereitgestellte Interceptor-Schnittstelle oder Filterschnittstelle zu implementieren. MySQL ist keine Ausnahme. Tatsächlich implementiert es lediglich die von MySQL gesteuerte Interceptor-Schnittstelle. Es gibt verschiedene Versionen von Kanälen, die speziell MySQL implementieren, und die Interceptor-Schnittstellen verschiedener Versionen sind unterschiedlich. Daher müssen Sie den Antwort-Interceptor entsprechend den verschiedenen Versionen des von Ihnen verwendeten MySQL-Treibers implementieren. Als Nächstes stellen wir MySQL-Kanäle 5 vor bzw. 8 Versionsimplementierung. MySQL5 wird hier unter Verwendung der MySQL-Kanalversion 5.1.18 als Beispiel für die Implementierung von Statem implementiert

So beheben Sie den 5120-Fehler in SQL So beheben Sie den 5120-Fehler in SQL Mar 06, 2024 pm 04:33 PM

Lösung: 1. Überprüfen Sie, ob der angemeldete Benutzer über ausreichende Berechtigungen zum Zugriff auf oder zum Betrieb der Datenbank verfügt, und stellen Sie sicher, dass der Benutzer über die richtigen Berechtigungen verfügt. 2. Überprüfen Sie, ob das Konto des SQL Server-Dienstes über die Berechtigung zum Zugriff auf die angegebene Datei verfügt Ordner und stellen Sie sicher, dass das Konto über ausreichende Berechtigungen zum Lesen und Schreiben der Datei oder des Ordners verfügt. 3. Überprüfen Sie, ob die angegebene Datenbankdatei von anderen Prozessen geöffnet oder gesperrt wurde. Versuchen Sie, die Datei zu schließen oder freizugeben, und führen Sie die Abfrage erneut aus . Versuchen Sie es als Administrator. Führen Sie Management Studio aus als usw.

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

See all articles