


Position benutzerdefinierter Spalten in MySQL-Abfragen: WHERE und HAVING
Frage:
Warum müssen die in der SELECT-Anweisung erstellten Spalten nach der HAVING-Klausel und nicht nach der WHERE-Klausel in MySQL platziert werden? Gibt es auch Nachteile bei der Verwendung von WHERE 1 anstelle der Angabe der vollständigen Definition der Spalte?
Antwort:
Während andere Antworten dieses Thema angesprochen haben, sind die wichtigsten Unterschiede wie folgt:
WHERE-Klausel: Filtert Daten vor der Auswahl und lässt jede Tabellenspalte zu. Es können keine Aliase oder Aggregatfunktionen verwendet werden.
HAVING-Klausel: Filtert Daten nach der Auswahl und ermöglicht die Verwendung ausgewählter Spalten, Aliase oder Aggregatfunktionen.
Standort:
Benutzerdefinierte Spalten sollten nach der HAVING-Klausel platziert werden, weil:
- HAVING filtert ausgewählte Ergebnisdaten, einschließlich benutzerdefinierter Spalten.
- WHERE filtert die Ergebnisdaten vor der Auswahl, ausgenommen benutzerdefinierte Spalten.
Effizienz:
Zum Filtern großer Datensätze ist die Verwendung der WHERE-Klausel effizienter, da sie irrelevante Zeilen eliminiert, bevor die Auswahl durchgeführt wird.
Beispiel:
Betrachten Sie das folgende Formular:
CREATE TABLE `table` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `value` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `value` (`value`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
Enthält 10 Datenzeilen mit ID- und Wertwerten im Bereich von 1 bis 10.
Abfrage:
SELECT `value` v FROM `table` WHERE `value`>5; -- 获取 5 行 SELECT `value` v FROM `table` HAVING `value`>5; -- 获取 5 行
Ergebnis:
Beide Abfragen liefern die gleichen Ergebnisse, was zeigt, dass die HAVING-Klausel ohne die GROUP BY-Klausel funktionieren kann.
ERKLÄREN:
EXPLAIN SELECT `value` v FROM `table` WHERE `value`>5;
<code>+----+-------------+-------+-------+---------------+-------+---------+------+------+--------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+-------+---------+------+------+--------------------------+ | 1 | SIMPLE | table | range | value | value | 4 | NULL | 5 | Using where; Using index | +----+-------------+-------+-------+---------------+-------+---------+------+------+--------------------------+</code>
EXPLAIN SELECT `value` v FROM `table` having `value`>5;
<code>+----+-------------+-------+-------+---------------+-------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+-------+---------+------+------+-------------+ | 1 | SIMPLE | table | index | NULL | value | 4 | NULL | 10 | Using index | +----+-------------+-------+-------+---------------+-------+---------+------+------+-------------+</code>
Wie Sie sehen können, verwenden sowohl WHERE als auch HAVING Indizes, aber die Anzahl der zurückgegebenen Zeilen ist unterschiedlich. WHERE filtert die Daten vor der Auswahl und reduziert so die Anzahl der Zeilen, während HAVING die Zeilen nach der Auswahl filtert.
Fazit:
- Fügen Sie benutzerdefinierte Spalten nach der HAVING-Klausel ein, um ausgewählte Daten zu filtern.
- Verwenden Sie die WHERE-Klausel, um große Datensätze effizient zu filtern, indem Sie irrelevante Zeilen ausschließen.
Das obige ist der detaillierte Inhalt vonMySQL-Abfragen: WHERE vs. HAVING – Wann sollte ich HAVING für benutzerdefinierte Spalten verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

TodropaviewInmysql, verwenden Sie "dropviewifexistsView_name;" und tomodifyAview, verwenden Sie "creetorReplaceViewView_nameasSelect ...". WhendroppingAView, AXIZENDENDEPENTENDENSANDUSUSE "SHOWREATEVIEWVIEW_NAME;" "

MySQLViewScaneffectivItilizedEntatternSliKeadapter, Dekorateur, Factory undobserver.1) adapterPatternAdaptsdatafromDifferentTableStoaunifiedView.2) DekoratorpatternHancesDataWithokulediel.3) FactoryPatherncreat.ProduculedFeld.3) FactoryPathertoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoryPectoration

ViewSinMysqLarbenicialforSimplifyTyComplexQueries, Verbesserung der Sicherheit, Sicherstellung von Dataconsistenz und optimizierterformance.1) SimplifyComplexQueriesbyCapscapsThemintorusableViewViews.2) ViewSenhiteCurityByControllingDataAccess.3) TheenedatacocurityBycaprollingDataAccess.3) TheenedatacocurityBycaprollingDataAccess.3) TheenedatacocurityBycaperingDataAccess.3) TheenedatacocurityBycaperingDataAccess.3) TheenedatacocurityByCaperingDataAccess.3) TheenedatacocourityByCaprollingDataAccess.3) Theensedataco

ToCreateAsimpleviewInmysql, UsethecreateviewStatement.1) definessetheviewWithCreateView_nameas.2)

Tocreateusersinmysql, useTheCecreateuserStatement.1) ForAlocalUser: CreateUser'LocalUser '@' localhost'ididentifiedBy'SecurePassword ';

MySQLViewShavelimitations: 1) Sie sind supportallsqloperationen, restriktedatamanipulation ThroughviewswithjoinSuBqueries.2) Sie können sich angesehen, insbesondere mit der kompetenten Formata -Ansichten, die docrexQuqueriesorlargedatasets angezeigt werden

OrteSermanagementinmysqlisicialforenHancingSecurityAnsuringEffizienceDatabaseoperation.1) Usecreateutertoaddusers, spezifizierende Connections mit 'localhost'or@'%'.

Mysqldoes nicht imposeahardlimitontriggers, aber praktische Faktorendeterminetheireffectiveuse: 1) serverconfigurationImpactstriggermanagement;


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
