MySQL min()函数
轉(zhuǎn)載自??MySQL min()函數(shù)
MySQL MIN函數(shù)
MIN()函數(shù)返回一組值中的最小值。MIN()函數(shù)在某些情況下非常有用,例如找到最小的數(shù)字,選擇最便宜的產(chǎn)品,獲得最低的信用額度等。
以下說明MIN()函數(shù)的語(yǔ)法:
MIN(DISTINCT expression);如果指定DISTINCT運(yùn)算符,則MIN函數(shù)返回不同值的最小值,與省略DISTINCT相同。換句話說,DISTINCT運(yùn)算符對(duì)MIN函數(shù)沒有任何影響,它只是為了ISO兼容性。
請(qǐng)注意,DISTINCT運(yùn)算符在其他聚合函數(shù)(如SUM,AVG和COUNT)中生效。
MySQL MIN函數(shù)示例
我們來看看示例數(shù)據(jù)庫(kù)(yiibaidb)中的products表,其結(jié)構(gòu)如下表所示 -
mysql> desc products; +--------------------+---------------+------+-----+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------+------+-----+---------+------------------+ | productCode | varchar(15) | NO | PRI | | | | productName | varchar(70) | NO | MUL | NULL | | | productLine | varchar(50) | NO | MUL | NULL | | | productScale | varchar(10) | NO | | NULL | | | productVendor | varchar(50) | NO | | NULL | | | productDescription | text | NO | | NULL | | | quantityInStock | smallint(6) | NO | | NULL | | | buyPrice | decimal(10,2) | NO | | NULL | | | MSRP | decimal(10,2) | NO | | NULL | | | stockValue | double | YES | | NULL | STORED GENERATED | +--------------------+---------------+------+-----+---------+------------------+ 10 rows in set要查詢獲得products表中最便宜的產(chǎn)品,請(qǐng)使用以下查詢:
SELECT MIN(buyPrice) FROMproducts;執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果?
mysql> SELECT MIN(buyPrice) FROMproducts; +---------------+ | MIN(buyPrice) | +---------------+ | 15.91 | +---------------+ 1 row in set?
MySQL MIN與子查詢
要不僅選擇價(jià)格,還要查詢產(chǎn)品代碼和產(chǎn)品名稱等其他產(chǎn)品信息,可以在子查詢中使用MIN函數(shù),如下所示:
SELECT productCode, productName, buyPrice FROMproducts WHEREbuyPrice = (SELECT MIN(buyPrice)FROMproducts);執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
+-------------+-------------------------------------+----------+ | productCode | productName | buyPrice | +-------------+-------------------------------------+----------+ | S24_2840 | 1958 Chevy Corvette Limited Edition | 15.91 | +-------------+-------------------------------------+----------+ 1 row in set上面語(yǔ)句怎么運(yùn)行?
- 子查詢返回products表中最低的價(jià)格產(chǎn)品。
- 外部查詢查詢價(jià)格等于從子查詢返回的最低價(jià)格的商品。
MySQL MIN與GROUP BY
當(dāng)您將MIN函數(shù)與SELECT語(yǔ)句中的GROUP BY子句相結(jié)合使用時(shí),可以獲取每個(gè)組的最小值。
例如,要查詢每個(gè)產(chǎn)品線的最低價(jià)格產(chǎn)品,請(qǐng)使用以下語(yǔ)句:
SELECT productline, MIN(buyprice) FROMproducts GROUP BY productline;執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
mysql> SELECT productline, MIN(buyprice) FROMproducts GROUP BY productline; +------------------+---------------+ | productline | MIN(buyprice) | +------------------+---------------+ | Classic Cars | 15.91 | | Motorcycles | 24.14 | | Planes | 29.34 | | Ships | 33.3 | | Trains | 26.72 | | Trucks and Buses | 24.92 | | Vintage Cars | 20.61 | +------------------+---------------+ 7 rows in set如果您不僅要選擇產(chǎn)品線,還要查詢products表中的其他列,例如產(chǎn)品代碼和產(chǎn)品名稱,則需要使用相關(guān)的子查詢。
?
MySQL MIN與相關(guān)子查詢
以下查詢通過將MIN()函數(shù)與相關(guān)子查詢相結(jié)合來查詢每個(gè)產(chǎn)品線中的最低價(jià)格產(chǎn)品:
SELECT productline, productCode, productName, buyprice FROMproducts a WHEREbuyprice = (SELECT MIN(buyprice)FROMproducts bWHEREb.productline = a.productline);執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
+------------------+-------------+-------------------------------------------+----------+ | productline | productCode | productName | buyprice | +------------------+-------------+-------------------------------------------+----------+ | Trucks and Buses | S18_2432 | 1926 Ford Fire Engine | 24.92 | | Vintage Cars | S24_2022 | 1938 Cadillac V-16 Presidential Limousine | 20.61 | | Classic Cars | S24_2840 | 1958 Chevy Corvette Limited Edition | 15.91 | | Planes | S24_3949 | Corsair F4U ( Bird Cage) | 29.34 | | Motorcycles | S32_2206 | 1982 Ducati 996 R | 24.14 | | Trains | S32_3207 | 1950s Chicago Surface Lines Streetcar | 26.72 | | Ships | S72_3212 | Pont Yacht | 33.3 | +------------------+-------------+-------------------------------------------+----------+ 7 rows in set對(duì)于來自外部查詢的每個(gè)產(chǎn)品線,相關(guān)子查詢選擇產(chǎn)品線中的最低價(jià)格產(chǎn)品并返回最低價(jià)格。 然后將返回的最低價(jià)格用作外部查詢的輸入,以選擇相關(guān)產(chǎn)品數(shù)據(jù),包括產(chǎn)品線,產(chǎn)品代碼,產(chǎn)品名稱和價(jià)格。
如果要在不使用MIN函數(shù)和子查詢的情況下實(shí)現(xiàn)相同的結(jié)果,則可以使用帶有LEFT JOIN子句的自聯(lián)接,如下查詢語(yǔ)句:
SELECT a.productline, a.productCode, a.productName, a.buyprice FROMproducts aLEFT JOINproducts b ON a.productline = b.productlineAND b.buyprice < a.buyprice WHEREb.productcode IS NULL;執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
+------------------+-------------+-------------------------------------------+----------+ | productline | productCode | productName | buyprice | +------------------+-------------+-------------------------------------------+----------+ | Trucks and Buses | S18_2432 | 1926 Ford Fire Engine | 24.92 | | Vintage Cars | S24_2022 | 1938 Cadillac V-16 Presidential Limousine | 20.61 | | Classic Cars | S24_2840 | 1958 Chevy Corvette Limited Edition | 15.91 | | Planes | S24_3949 | Corsair F4U ( Bird Cage) | 29.34 | | Motorcycles | S32_2206 | 1982 Ducati 996 R | 24.14 | | Trains | S32_3207 | 1950's Chicago Surface Lines Streetcar | 26.72 | | Ships | S72_3212 | Pont Yacht | 33.3 | +------------------+-------------+-------------------------------------------+----------+ 7 rows in set在本教程中,您已經(jīng)學(xué)習(xí)了如何使用MySQL?MIN函數(shù)來查找一組值中的最小值。
總結(jié)
以上是生活随笔為你收集整理的MySQL min()函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: How to Connect Your
- 下一篇: MySQL avg()函数