Bagaimana untuk menanyakan nilai maksimum dalam mysql

青灯夜游
Lepaskan: 2021-12-31 15:10:40
asal
36879 orang telah melayarinya

Dalam mysql, anda boleh menggunakan pernyataan "SELECT" dan fungsi MAX() untuk menanyakan nilai maksimum Fungsi ini boleh mengembalikan nilai maksimum dalam set nilai Sintaks ialah "SELECT MAX(DISTINCT ungkapan) DARI nama jadual data ;".

Bagaimana untuk menanyakan nilai maksimum dalam mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Dalam mysql, anda boleh menggunakan pernyataan "SELECT" dan fungsi MAX() untuk menanyakan nilai maksimum. Fungsi

MySQL MAX() mengembalikan nilai maksimum dalam satu set nilai. Fungsi MAX() sangat mudah dalam banyak pertanyaan, seperti mencari kuantiti maksimum, produk paling mahal dan pembayaran maksimum oleh pelanggan. Sintaks fungsi

MAX() adalah seperti berikut:

MAX(DISTINCT expression);
Salin selepas log masuk

Jika anda menambah operator DISTINCT, fungsi MAX mengembalikan maksimum nilai berbeza, iaitu maksimum semua nilai sama. Ini bermakna pengendali DISTINCT tidak akan memberi sebarang kesan pada fungsi MAX (tidak kira sama ada operator DISTINCT digunakan atau tidak).

Sila ambil perhatian bahawa pengendali DISTINCT berfungsi dalam fungsi pengagregatan lain seperti COUNT, SUM dan AVG.

Contoh fungsi MySQL MAX

Mari kita lihat jadual payments dalam pangkalan data sampel (yiibaidb struktur jadualnya adalah seperti berikut-

).
mysql> desc payments;
+----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| customerNumber | int(11)       | NO   | PRI | NULL    |       |
| checkNumber    | varchar(50)   | NO   | PRI | NULL    |       |
| paymentDate    | date          | NO   |     | NULL    |       |
| amount         | decimal(10,2) | NO   |     | NULL    |       |
+----------------+---------------+------+-----+---------+-------+
4 rows in set
Salin selepas log masuk

Untuk mendapatkan bayaran maksimum dalam jadual payments, anda boleh menggunakan pertanyaan berikut:

SELECT 
    MAX(amount)
FROM
    payments;
Salin selepas log masuk

Lakukan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-

mysql> SELECT 
    MAX(amount)
FROM
    payments;
+-------------+
| MAX(amount) |
+-------------+
| 120166.58   |
+-------------+
1 row in set
Salin selepas log masuk

Fungsi MySQL MAX dalam subquery

Bukan sahaja untuk mendapatkan jumlah bayaran maksimum tetapi juga untuk mendapatkan maklumat pembayaran lain seperti nombor pelanggan, nombor cek dan tarikh pembayaran yang boleh anda gunakan dalam subquery Fungsi MAX, seperti yang ditunjukkan di bawah:

SELECT 
    *
FROM
    payments
WHERE
    amount = (
 SELECT 
            MAX(amount)
        FROM
            payments);
Salin selepas log masuk

Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut -

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set
Salin selepas log masuk

Bagaimanakah pernyataan pertanyaan di atas berjalan?

  • Subquery mengembalikan semua jumlah pembayaran maksimum.
  • Pertanyaan luar mendapatkan maklumat pembayaran lain yang berkaitan untuk jumlah yang sama dengan jumlah maksimum yang dikembalikan daripada subkueri.

Cara lain tanpa menggunakan fungsi MAX ialah menggunakan klausa ORDER BY untuk mengisih set hasil dalam susunan menurun dan menggunakan klausa LIMIT untuk mendapatkan baris pertama, seperti dalam pertanyaan berikut:

SELECT 
    *
FROM
    payments
ORDER BY amount DESC
LIMIT 1;
Salin selepas log masuk

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set
Salin selepas log masuk

Jika anda tidak mencipta indeks pada lajur amount, pertanyaan kedua akan laksanakan lebih pantas kerana Ia menyemak semua baris dalam jadual payments, manakala pertanyaan pertama menyemak semua baris dalam jadual payments dua kali, sekali dalam subkueri dan sekali dalam pertanyaan luar. Walau bagaimanapun, jika lajur amount diindeks, pertanyaan pertama akan dilaksanakan dengan lebih pantas.

MySQL MAX dengan klausa GROUP BY

Untuk mencari nilai maksimum setiap kumpulan yang anda boleh gunakan dalam pernyataan SELECT MAX fungsi dan klausa GROUP BY.

Untuk setiap pelanggan, pertanyaan untuk mendapatkan bayaran maksimum yang telah dibayar oleh pelanggan Anda boleh menggunakan pertanyaan berikut:

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
ORDER BY MAX(amount);
Salin selepas log masuk

Lakukan pernyataan pertanyaan di atas dan dapatkan hasil pertanyaan berikut-<. 🎜>

+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            219 | 4465.85     |
|            198 | 9658.74     |
|            381 | 14379.9     |
|            103 | 14571.44    |
|            473 | 17746.26    |
|            362 | 18473.71    |
******* 此处省略一大波数据 ******
|            148 | 105743      |
|            124 | 111654.4    |
|            141 | 120166.58   |
+----------------+-------------+
98 rows in set
Salin selepas log masuk

MySQL MAX dengan klausa HAVING

Anda boleh menggunakan fungsi

dalam klausa HAVING untuk menentukan Tambah penapis untuk kumpulan. GROUP BYMAXSebagai contoh, pertanyaan berikut mencari pembayaran maksimum untuk setiap pelanggan dan berdasarkan jumlah yang dikembalikan, seperti dalam penyata pertanyaan berikut, hanya pertanyaan untuk pembayaran yang melebihi

-

80000

Laksanakan pernyataan pertanyaan di atas, keputusan berikut diperoleh -
SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
HAVING MAX(amount) > 80000;
Salin selepas log masuk

[Cadangan berkaitan:
+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            114 | 82261.22    |
|            124 | 111654.4    |
|            141 | 120166.58   |
|            148 | 105743      |
|            167 | 85024.46    |
|            239 | 80375.24    |
|            321 | 85559.12    |
+----------------+-------------+
7 rows in set
Salin selepas log masuk
tutorial video mysql

]

Atas ialah kandungan terperinci Bagaimana untuk menanyakan nilai maksimum dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan