2012-12-28 44 views
0

這是我的桌子。爲什麼這個mysql查詢有趣的結果...?

mysql> desc products; 
+--------------------+-------------+------+-----+--------------------------------------+-------+ 
| Field    | Type  | Null | Key | Default        | Extra | 
+--------------------+-------------+------+-----+--------------------------------------+-------+ 
| productCode  | varchar(15) | NO | PRI | NULL         |  | 
| productName  | varchar(70) | NO |  | NULL         |  | 
| productUrl   | varchar(50) | YES |  | NULL         |  | 
| productLine  | varchar(50) | NO |  | NULL         |  | 
| productScale  | varchar(10) | NO |  | NULL         |  | 
| productVendor  | varchar(50) | NO |  | NULL         |  | 
| productDescription | text  | NO |  | NULL         |  | 
| quantityInStock | smallint(6) | NO |  | NULL         |  | 
| buyPrice   | double  | NO |  | NULL         |  | 
| MSRP    | double  | NO |  | NULL         |  | 
| Image    | varchar(50) | YES |  | phpGridx/SampleImages/motorcycle.jpg |  | 
+--------------------+-------------+------+-----+--------------------------------------+-------+ 

當我試着下面的查詢..?

mysql> select productVendor,count(productCode) from products order by productCode; 
+-----------------+--------------------+ 
| productVendor | count(productCode) | 
+-----------------+--------------------+ 
| Min Lin Diecast |    110 | 
+-----------------+--------------------+ 

爲什麼顯示'Min Lin Diecast'。我的桌子上有大約11個其他產品賣家。爲什麼它,總行數是110這是好的,但我不明白爲什麼它顯示該供應商特別。 (它甚至不是第一個記錄)。

任何機構可以解釋我爲什麼..

回答

2

試試這個:

SELECT productVendor,count(productCode) 
FROM products 
GROUP BY productVendor 
ORDER BY productCode; 
+0

我知道它沒有羣... ...!但讓我知道爲什麼它顯示產品供應商..! – Chella

+0

因爲您使用了COUNT功能它會給您計數和檢查** Min Lin Diecast **是您在按產品代碼訂購數據時選擇輸出的第一個輸入項。所以它會重新查詢數據的第一排查詢 –

+0

明白了吧...!謝謝你saharsh ..! – Chella

3

,因爲你沒有GROUP BY條款導致它只有1個記錄的回報。

select productVendor,count(productCode) 
from products 
GROUP BY productVendor 
order by productCode 

如果在mysql中啓用ONLY_FULL_GROUP_BY,則不會執行查詢。

+0

我理解,但讓我知道爲什麼它顯示的產品供應商 – Chella

+0

如果您運行此查詢'選擇產品代碼, productDndor from products ORDER BY productCode ASC',什麼是第一個記錄? –

+0

這是第一個查詢。但我覺得,......這是一個完全錯誤的查詢錯誤的結果..!你說什麼?? – Chella

0

正如你不會在查詢和在SELECT語句中加入GROUP BY子句中,有兩個列productVendor和產品代碼,我的問題是,如果你想知道剛纔算PRODUCTCODE的那麼您爲什麼選擇productVendor列,因爲始終productVendor值將是該列的第一個值。

所以,如果你希望所有的產品代碼的計數,productVendor聰明人,你應該使用這個GROUP BY子句

 SELECT productVendor,count(productCode) 
    FROM products 
    GROUP BY productVendor 
    ORDER BY productCode