Rumah > Artikel > pangkalan data > Bagaimana untuk menanyakan nilai maksimum dalam mysql
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 ;".
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);
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.
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
Untuk mendapatkan bayaran maksimum dalam jadual payments
, anda boleh menggunakan pertanyaan berikut:
SELECT MAX(amount) FROM payments;
Lakukan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-
mysql> SELECT MAX(amount) FROM payments; +-------------+ | MAX(amount) | +-------------+ | 120166.58 | +-------------+ 1 row in set
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);
Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut -
+----------------+-------------+-------------+-----------+ | customerNumber | checkNumber | paymentDate | amount | +----------------+-------------+-------------+-----------+ | 141 | JE105477 | 2015-03-18 | 120166.58 | +----------------+-------------+-------------+-----------+ 1 row in set
Bagaimanakah pernyataan pertanyaan di atas berjalan?
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;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-
+----------------+-------------+-------------+-----------+ | customerNumber | checkNumber | paymentDate | amount | +----------------+-------------+-------------+-----------+ | 141 | JE105477 | 2015-03-18 | 120166.58 | +----------------+-------------+-------------+-----------+ 1 row in set
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.
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);
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
dalam klausa HAVING
untuk menentukan Tambah penapis untuk kumpulan. GROUP BY
MAX
Sebagai 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
SELECT customerNumber, MAX(amount) FROM payments GROUP BY customerNumber HAVING MAX(amount) > 80000;[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 settutorial 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!