2012-12-28 45 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