IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁數(shù)據(jù)庫MYSQL → MySQL_常用查詢的例子

MySQL_常用查詢的例子

時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

下面是一些學(xué)習(xí)如何用mysql解決一些常見問題的例子。

一些例子使用數(shù)據(jù)庫表"shop",包含某個商人的每篇文章(物品號)的價格。假定每個商人的每篇文章有一個單獨(dú)的固定價格,那么(物品,商人)是記錄的主鍵。  

你能這樣創(chuàng)建例子數(shù)據(jù)庫表:

以下為引用的內(nèi)容:

  CREATE TABLE shop (
  article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
  dealer CHAR(20)         DEFAULT ''   NOT NULL,
  price  DOUBLE(16,2)       DEFAULT '0.00' NOT NULL,
  PRIMARY KEY(article, dealer));
  
  INSERT INTO shop VALUES
  (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),
  (3,'D',1.25),(4,'D',19.95);

好了,例子數(shù)據(jù)是這樣的:

以下為引用的內(nèi)容:

  SELECT * FROM shop
  
  +---------+--------+-------+
  | article | dealer | price |
  +---------+--------+-------+
  |  0001 | A   | 3.45 |
  |  0001 | B   | 3.99 |
  |  0002 | A   | 10.99 |
  |  0003 | B   | 1.45 |
  |  0003 | C   | 1.69 |
  |  0003 | D   | 1.25 |
  |  0004 | D   | 19.95 |
  +---------+--------+-------+

3.1 列的最大值
"最大的物品號是什么?"

以下為引用的內(nèi)容:

  SELECT MAX(article) AS article FROM shop
  
  +---------+
  | article |
  +---------+
  |    4 |
  +---------+

3.2 擁有某個列的最大值的行
"找出最貴的文章的編號、商人和價格"
  
在ANSI-SQL中這很容易用一個子查詢做到:

以下為引用的內(nèi)容:

  
  SELECT article, dealer, price
  FROM  shop
  WHERE price=(SELECT MAX(price) FROM shop)

在MySQL中(還沒有子查詢)就用2步做到:

用一個SELECT語句從表中得到最大值。
使用該值編出實(shí)際的查詢:

以下為引用的內(nèi)容:

  SELECT article, dealer, price
  FROM  shop
  WHERE price=19.95

另一個解決方案是按價格降序排序所有行并用MySQL特定LIMIT子句只得到的第一行:

以下為引用的內(nèi)容:

  SELECT article, dealer, price
  FROM  shop
  ORDER BY price DESC
  LIMIT 1

注意:如果有多個最貴的文章( 例如每個19.95),LIMIT解決方案僅僅顯示他們之一!
  
3.3 列的最大值:按組:只有值

"每篇文章的最高的價格是什么?"

以下為引用的內(nèi)容:

  SELECT article, MAX(price) AS price
  FROM  shop
  GROUP BY article
  
  +---------+-------+
  | article | price |
  +---------+-------+
  |  0001 | 3.99 |
  |  0002 | 10.99 |
  |  0003 | 1.69 |
  |  0004 | 19.95 |
  +---------+-------+

3.4 擁有某個字段的組間最大值的行
"對每篇文章,找出有最貴的價格的交易者。"
  
在ANSI SQL中,我可以用這樣一個子查詢做到:
  

以下為引用的內(nèi)容:

  SELECT article, dealer, price
  FROM  shop s1
  WHERE price=(SELECT MAX(s2.price)
         FROM shop s2
         WHERE s1.article = s2.article)

在MySQL中,最好是分幾步做到:
  
得到一個表(文章,maxprice)。見3.4 擁有某個域的組間最大值的行。
對每篇文章,得到對應(yīng)于存儲最大價格的行。
這可以很容易用一個臨時表做到:

以下為引用的內(nèi)容:

  CREATE TEMPORARY TABLE tmp (
      article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
      price  DOUBLE(16,2)       DEFAULT '0.00' NOT NULL);
  
  LOCK TABLES article read;
  
  INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;
  
  SELECT article, dealer, price FROM shop, tmp
  WHERE shop.article=tmp.articel AND shop.price=tmp.price;
  
  UNLOCK TABLES;
  
  DROP TABLE tmp;

如果你不使用一

關(guān)鍵詞標(biāo)簽:例子,查詢,常用,artic

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL常用維護(hù)管理工具MySQL常用維護(hù)管理工具Linux VPS/服務(wù)器上輕松導(dǎo)入、導(dǎo)出MySQL數(shù)據(jù)Linux VPS/服務(wù)器上輕松導(dǎo)入、導(dǎo)出MySQL數(shù)據(jù)MySQL復(fù)制的概述、安裝、故障、技巧、工具MySQL復(fù)制的概述、安裝、故障、技巧、工具

相關(guān)下載

人氣排行 MySQL數(shù)據(jù)庫啟動失敗1067進(jìn)程意外終止的解決辦法總結(jié)Mysql 1045錯誤解決辦法10款MySQL數(shù)據(jù)庫客戶端圖形界面管理工具推薦MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法MySQL導(dǎo)出導(dǎo)入命令的用例MySQL無法啟動、無法停止各種解決方法總結(jié)三種常用的MySQL建表語句Mysql清空表的實(shí)現(xiàn)方法