0

这是我的桌子。

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 |
+-----------------+--------------------+

为什么显示“敏林压铸”。我的桌子上有大约 11 个其他产品供应商。为什么要这样做,总行数是 110 没关系,但我不明白为什么它特别显示那个供应商。(这甚至不是第一个记录)。

任何人都可以解释我为什么..

4

3 回答 3

3

因为您没有GROUP BY导致它只有 1 条记录返回的子句。

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

如果你ONLY_FULL_GROUP_BY在 mysql 中启用,你的查询将不会执行。

于 2012-12-28T05:35:03.777 回答
2

试试这个:

SELECT productVendor,count(productCode) 
FROM products 
GROUP BY productVendor
ORDER BY productCode;
于 2012-12-28T05:35:40.323 回答
0

由于您没有在查询中添加 GROUP BY 子句,并且在 SELECT 语句中您有两列 productVendor 和 productCode,我的问题是,如果您只想知道 productCode 的计数,那么为什么要选择 productVendor 列,因为 productVendor 值总是该列的第一个值。

因此,如果您想计算所有 productCode , productVendor 明智的,您应该使用此 GROUP BY 子句

     SELECT productVendor,count(productCode) 
     FROM   products 
     GROUP BY productVendor
     ORDER BY productCode
于 2012-12-28T06:02:06.217 回答