Heim Datenbank MySQL-Tutorial SqlServer 中 Group by、having、order by、Distinct 使用注意事

SqlServer 中 Group by、having、order by、Distinct 使用注意事

Jun 07, 2016 pm 03:25 PM
d order sqlserver

直奔主题,如下SQL语句(via:女孩礼物网): SELECT COUNT(* ) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY REQUEST,METHOD HAVING (REQUEST = ' FC.OCEAN.JOB.SERVER.CBIZOZBKHEADER ' OR REQUEST= ' FC.Ocean.Job.Server.CBizOzDocHeader ' )AND COU

直奔主题,如下SQL语句(via:女孩礼物网):

SELECT COUNT(*<span>) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY 
REQUEST,METHOD HAVING (REQUEST </span>=<span>'</span><span>FC.OCEAN.JOB.SERVER.CBIZOZBKHEADER</span><span>'</span> OR REQUEST=<span>'</span><span>FC.Ocean.Job.Server.CBizOzDocHeader</span><span>'</span><span>)
AND COUNT(</span>*) ><span>3</span><span>
ORDER BY REQUEST</span>
Nach dem Login kopieren

注意事项:

HAVING后的条件不能用别名COUNT>3 必须使用COUNT(*) >3,否则报:列名 'COUNT' 无效。

having 子句中的每一个元素并不一定要出现在select列表中

如果把该语句写成:

SELECT COUNT(*<span>) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY 
REQUEST ORDER BY REQUEST</span>
Nach dem Login kopieren

那么将报:

选择列表中的列 'REQUESTMETH.method' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

注意:
1、使用GROUP BY 子句时,SELECT 列表中的非汇总列必须为GROUP BY 列表中的项。
2、分组时,所有的NULL值分为一组。
3、GROUP BY 列表中一般不允许出现复杂的表达试、显示标题以及SELECT列表中的位置标号。

如:

SELECT REQUEST,METHOD, COUNT(*<span>) AS COUNT FROM REQUESTMETH GROUP BY 
REQUEST,</span><span>2</span> ORDER BY REQUEST  
Nach dem Login kopieren

错误信息为:每个 GROUP BY 表达式都必须包含至少一个列引用。

 

GROUP BY 中使用 ORDER BY注意事项:

SELECT COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY REQUEST,METHOD ORDER BY REQUEST,METHOD
Nach dem Login kopieren

--这样是允许的, ORDER BY后面的字段包含在GROUP BY 子句中

 

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNT(*) DESC 
Nach dem Login kopieren

--这样是允许的,ORDER BY后面的字段包含在聚合函数中,结果集同下面语句一样

 

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNTS DESC 
Nach dem Login kopieren

--这样是允许的,区别于HAVING,HAVING后不允许跟聚集函数的别名作为过滤条件

 

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY METHOD
Nach dem Login kopieren

--这样是错误的:ORDER BY 子句中的列 "REQUESTMETH.method" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。


SELECT DISTINCT 中使用 ORDER BY注意事项:

SELECT DISTINCT BOOKID FROM BOOK ORDER BY BOOKNAME
Nach dem Login kopieren

以上语句将报:

--如果指定了SELECT DISTINCT,那么ORDER BY 子句中的项就必须出现在选择列表中。

因为以上语句类似

SELECT BOOKID FROM BOOK GROUP BY BOOKID ORDER BY BOOKNAME
Nach dem Login kopieren

其实错误信息也为:

--ORDER BY子句中的列"BOOK.BookName" 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。


应该改为:

SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK ORDER BY BOOKNAME
Nach dem Login kopieren

<span>SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK<br></span>
Nach dem Login kopieren

SELECT BOOKID,BOOKNAME FROM BOOK GROUP BY BOOKID,BOOKNAME
Nach dem Login kopieren

 

以上两句查询结果是一致的,DISTINCT的语句其实完全可以等效的转换为GROUP BY语句

 

 

 

 

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 尊渡假赌尊渡假赌尊渡假赌

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)

So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist So lösen Sie das Problem, dass das genannte Objekt bereits in der SQLServer-Datenbank vorhanden ist Apr 05, 2024 pm 09:42 PM

Für Objekte mit demselben Namen, die bereits in der SQL Server-Datenbank vorhanden sind, müssen folgende Schritte ausgeführt werden: Bestätigen Sie den Objekttyp (Tabelle, Ansicht, gespeicherte Prozedur). Mit IF NOT EXISTS kann die Erstellung übersprungen werden, wenn das Objekt leer ist. Wenn das Objekt Daten enthält, verwenden Sie einen anderen Namen oder ändern Sie die Struktur. Verwenden Sie DROP, um vorhandene Objekte zu löschen (Vorsicht, Sicherung empfohlen). Suchen Sie nach Schemaänderungen, um sicherzustellen, dass keine Verweise auf gelöschte oder umbenannte Objekte vorhanden sind.

So importieren Sie eine MDF-Datei in SQL Server So importieren Sie eine MDF-Datei in SQL Server Apr 08, 2024 am 11:41 AM

Die Importschritte sind wie folgt: Kopieren Sie die MDF-Datei in das Datenverzeichnis von SQL Server (normalerweise C:\Programme\Microsoft SQL Server\MSSQL\DATA). Öffnen Sie in SQL Server Management Studio (SSMS) die Datenbank und wählen Sie Anhängen aus. Klicken Sie auf die Schaltfläche „Hinzufügen“ und wählen Sie die MDF-Datei aus. Bestätigen Sie den Datenbanknamen und klicken Sie auf die Schaltfläche OK.

Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Was tun, wenn der SQLServer-Dienst nicht gestartet werden kann? Apr 05, 2024 pm 10:00 PM

Wenn der SQL Server-Dienst nicht gestartet werden kann, können Sie die folgenden Schritte beheben: Überprüfen Sie das Fehlerprotokoll, um die Grundursache zu ermitteln. Stellen Sie sicher, dass das Dienstkonto über die Berechtigung zum Starten des Dienstes verfügt. Überprüfen Sie, ob Abhängigkeitsdienste ausgeführt werden. Deaktivieren Sie die Antivirensoftware. Reparieren Sie die SQL Server-Installation. Wenn die Reparatur nicht funktioniert, installieren Sie SQL Server neu.

So überprüfen Sie die SQLServer-Portnummer So überprüfen Sie die SQLServer-Portnummer Apr 05, 2024 pm 09:57 PM

So zeigen Sie die SQL Server-Portnummer an: Öffnen Sie SSMS und stellen Sie eine Verbindung zum Server her. Suchen Sie den Servernamen im Objekt-Explorer, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften. Sehen Sie sich auf der Registerkarte „Verbindung“ das Feld „TCP-Port“ an.

Wo ist die SQLServer-Datenbank? Wo ist die SQLServer-Datenbank? Apr 05, 2024 pm 08:21 PM

SQL Server-Datenbankdateien werden normalerweise am folgenden Standardspeicherort gespeichert: Windows: C:\Programme\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data Der Speicherort der Datenbankdatei kann durch Ändern des Datenbankdateipfads angepasst werden Einstellung.

So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her So stellen Sie eine versehentlich gelöschte Datenbank in SQL Server wieder her Apr 05, 2024 pm 10:39 PM

Wenn Sie eine SQL Server-Datenbank versehentlich löschen, können Sie die Datenbankaktivität stoppen; Party-Tools. Bitte sichern Sie Ihre Datenbank regelmäßig und aktivieren Sie die Transaktionsprotokollierung, um Datenverlust zu verhindern.

Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Wie lösche ich SQL Server, wenn die Installation fehlschlägt? Apr 05, 2024 pm 11:27 PM

Wenn die SQL Server-Installation fehlschlägt, können Sie sie mit den folgenden Schritten bereinigen: Deinstallieren Sie SQL Server. Löschen Sie Registrierungsschlüssel. Löschen Sie Dateien und Ordner. Starten Sie den Computer neu

So beheben Sie den Java-Verbindungs-SQLServer-Fehler So beheben Sie den Java-Verbindungs-SQLServer-Fehler May 01, 2023 am 09:22 AM

Das Problem wurde festgestellt, dass ich dieses Mal die SqlServer-Datenbank verwendete, die ich zuvor noch nicht verwendet hatte, aber das Problem war nicht schwerwiegend. Nachdem ich den SqlServer gemäß den Schritten im Anforderungsdokument verbunden hatte, startete ich das SpringBoot-Projekt und fand ein Fehler wie folgt: Zuerst dachte ich, es sei ein Problem mit der SQLServer-Verbindung, also habe ich die Datenbank überprüft und festgestellt, dass alles in der Datenbank normal ist. Ich habe zuerst meine Kollegen gefragt, ob sie ein solches Problem hätten Ich stellte fest, dass dies nicht der Fall war, und begann meinen besten Teil mit der Baidu-Programmierung. Die spezifische Fehlermeldung, die ich zu lösen begann, war diese, also startete ich die Baidu-Fehlerberichterstattung: ERRORc.a.d.p.DruidDataSource$CreateCo

See all articles