Relationale Datenbank (8): ORDER BY- und GROUP BY-Klauseln in MySQL

Sortieren

Wenn Sie die gelesenen Daten sortieren müssen, können Sie die  ORDER BY -  Klausel von MySQL verwenden, um festzulegen, welches Feld Sie auf welche Weise sortieren möchten, und dann die Suchergebnisse zurückgeben.

Grammatik

# SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
  • Sie können jedes Feld als Sortierbedingung verwenden, um sortierte Abfrageergebnisse zurückzugeben.
  • Sie können mehrere Felder zum Sortieren festlegen.
  • Sie können die Schlüsselwörter ASC oder DESC verwenden, um festzulegen, dass die Abfrageergebnisse in aufsteigender oder absteigender Reihenfolge sortiert werden. Standardmäßig ist es in aufsteigender Reihenfolge.
  • Sie können WHERE...LIKE-Klauseln hinzufügen, um Bedingungen festzulegen.

Verwenden der ORDER BY-Klausel in der Eingabeaufforderung

Beispiel

# 以下将在 SQL SELECT 语句中使用 ORDER BY 子句来读取MySQL 数据表 hanscal_tb 中的数据:
# 结果将按降序排列
mysql> use hanscal; 
mysql> SELECT * from hanscal_tb ORDER BY submission_date ASC; 

# 读取 hanscal_tb 表中所有数据并按 submission_date 字段的升序排列。
mysql> SELECT * from hanscal_tb ORDER BY submission_date DESC;

Gruppierung

Die GROUP BY -Anweisung gruppiert die Ergebnismenge basierend auf einer oder mehreren Spalten. Sie können die Funktionen COUNT, SUM, AVG usw. auf gruppierte Spalten anwenden .

GROUP BY-Syntax

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Beispiel

Das Beispiel in diesem Kapitel verwendet die folgende Tabellenstruktur und Daten Überprüfen Sie die Daten in der Datenbank, bevor Sie sie verwenden.

mysql> Namen setzen utf8;
mysql> SELECT * FROM employee_tbl;
+----+--------+---------------------+--------+
| ID | Name | Datum | anmelden |
+----+--------+---------------------+--------+
| 1 | Xiao Ming | 2016-04-22 15:25:33 | 1 |
| 2 | Xiao Wang | 2016-04-20 15:25:47 | 3 |
| 3 | Xiao Li | 2016-04-19 15:26:02 | 2 |
| 4 | Xiao Wang | 2016-04-07 15:26:14 | 4 |
| 5 | Xiao Ming | 2016-04-11 15:26:40 | 4 |
| 6 | Xiao Ming | 2016-04-04 15:26:54 | 2 |
+----+--------+---------------------+--------+
6 Zeilen im Satz (0,00 Sek.)

Verwenden Sie die GROUP BY -Anweisung, um die Datentabelle nach Namen zu gruppieren und zu zählen, wie viele Datensätze jede Person hat, standardmäßig in aufsteigender Reihenfolge:

mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
+--------+----------+
| Name | ZÄHLEN(*) |
+--------+----------+
| Xiao Li | 1 |
| Xiao Ming | 3 |
| Xiao Wang | 2 |
+--------+----------+
3 Reihen im Satz (0,01 Sek.)

WITH ROLLUP-Syntax

WITH ROLLUP kann die gleichen Statistiken ( SUM, AVG, COUNT ...) auf der Grundlage von gruppierten Statistiken implementieren.

Beispiel

Gruppieren Sie die obige Datentabelle nach Namen und zählen Sie dann, wie oft sich jede Person angemeldet hat:

mysql> SELECT name, SUM(signin) as signin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+
| Name | signin_count |
+--------+--------------+
| Xiao Li | 2 |
| Xiao Ming | 7 |
| Xiao Wang | 7 |
| NULL | 16 |
+--------+--------------+
4 Reihen im Satz (0,00 Sek.)

Der Datensatz NULL repräsentiert die Anzahl der Anmeldungen für alle .

syntax verschmelzen

Sie können Coalesce verwenden , um einen Namen festzulegen, der NULL, Coalesce-Syntax ersetzen kann:

select coalesce(a,b,c);

Parameterbeschreibung: wenn a==null, wähle b; wenn b==null, wähle c; wenn a!=null, wähle a; wenn abc null ist, gib null (bedeutungslos) zurück.

Wenn der Name im folgenden Beispiel leer ist, verwenden wir stattdessen die Summe:

mysql> SELECT coalesce(name, '总数'), SUM(signin) as signin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+---------------------+--------------+
| coalesce(name, 'total') | signin_count |
+---------------------+--------------+
| Xiao Li | 2 |
| Xiao Ming | 7 |
| Xiao Wang | 7 |
| Gesamt | 16 |
+---------------------+--------------+
4 Reihen im Satz (0,01 Sek.)

Umgang mit NULL-Werten

MySQL verwendet den SQL SELECT-Befehl und die WHERE-Klausel, um die Daten in der Datentabelle zu lesen, aber wenn das bereitgestellte Abfragebedingungsfeld NULL ist, funktioniert der Befehl möglicherweise nicht richtig.

Um mit dieser Situation fertig zu werden, bietet MySQL drei Hauptoperatoren:

  • IS NULL:  Dieser Operator gibt true zurück, wenn der Spaltenwert NULL ist.
  • IS NOT NULL:  Wenn der Wert der Spalte nicht NULL ist, gibt der Operator true zurück.
  • <=>:  Der Vergleichsoperator (anders als der =-Operator) gibt wahr zurück, wenn die beiden verglichenen Werte gleich sind oder beide NULL sind.

Die bedingte Vergleichsoperation auf NULL ist etwas Besonderes. Sie können nicht = NULL oder != NULL verwenden, um NULL-Werte in einer Spalte zu finden . In MySQL gibt ein Vergleich eines NULL-Werts mit einem beliebigen anderen Wert (sogar NULL) immer NULL zurück, dh NULL = NULL gibt NULL zurück. NULL wird in MySQL mit den Operatoren IS NULL und IS NOT NULL behandelt.

Beispiel

# 查找数据表hanscal_tb中hanscal_count列是否为NULL,必须使用 IS NULL 和 IS NOT NULL:

mysql> SELECT * FROM hanscal_tb WHERE hanscal_count IS NULL; 

ifnull-Funktion

# columnName1,columnName2 为 int 型,
# 当 columnName2 中有值为 null 时,columnName1+columnName2=null,
# ifnull(columnName2,0) 把 columnName2 中 null 值转为 0。

select * , columnName1+ifnull(columnName2,0) from tableName;

Supongo que te gusta

Origin blog.csdn.net/weixin_43145427/article/details/124166146
Recomendado
Clasificación