首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个mysql查询会有这个有趣的结果呢?

为什么这个mysql查询会有这个有趣的结果呢?
EN

Stack Overflow用户
提问于 2012-12-28 13:33:44
回答 3查看 80关注 0票数 0

这是我的桌子。

代码语言:javascript
运行
复制
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 |       |
+--------------------+-------------+------+-----+--------------------------------------+-------+

当我尝试下面的查询时..?

代码语言:javascript
运行
复制
mysql> select productVendor,count(productCode) from products order by productCode;
+-----------------+--------------------+
| productVendor   | count(productCode) |
+-----------------+--------------------+
| Min Lin Diecast |                110 |
+-----------------+--------------------+

为什么会显示“民林食堂”。我的桌子上还有另外11个productVendors。为什么要这样做,总行数是110。这是可以的,但我不明白为什么它特别显示供应商。(这甚至不是第一个记录)。

有人能给我解释一下为什么..

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-28 13:35:40

试试这个:

代码语言:javascript
运行
复制
SELECT productVendor,count(productCode) 
FROM products 
GROUP BY productVendor
ORDER BY productCode;
票数 2
EN

Stack Overflow用户

发布于 2012-12-28 13:35:04

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

代码语言:javascript
运行
复制
select productVendor,count(productCode) 
from products 
GROUP BY productVendor
order by productCode

如果您在mysql中启用了ONLY_FULL_GROUP_BY,则不会执行您的查询。

票数 3
EN

Stack Overflow用户

发布于 2012-12-28 14:02:06

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

因此,如果您想要计算所有productCode,则应该使用GROUP BY子句

代码语言:javascript
运行
复制
     SELECT productVendor,count(productCode) 
     FROM   products 
     GROUP BY productVendor
     ORDER BY productCode
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14065031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档