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

为什么这个mysql查询会有这么有趣的结果。。。?,mysql,select,count,group-by,Mysql,Select,Count,Group By,这是我的桌子 mysql> desc products; +--------------------+-------------+------+-----+--------------------------------------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--

这是我的桌子

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行没关系,但我不明白为什么它特别显示了那个供应商。(这甚至不是第一个记录)


有谁能解释一下为什么..

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

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

如果您在mysql中启用了
ONLY\u FULL\u GROUP\u BY
,您的查询将不会执行。

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

select productVendor,count(productCode) 
from products 
GROUP BY productVendor
order by productCode
如果您在mysql中启用了
ONLY\u FULL\u GROUP\u BY
,您的查询将不会执行。

请尝试以下操作:

SELECT productVendor,count(productCode) 
FROM products 
GROUP BY productVendor
ORDER BY productCode;
试试这个:

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

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

所以,如果您想计算所有productCode的数量,那么就应该使用GROUPBY子句

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

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

所以,如果您想计算所有productCode的数量,那么就应该使用GROUPBY子句

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


我理解,但请告诉我为什么会显示产品供应商如果您运行此查询
选择productCode,productVendor from products ORDER BY productCode ASC
,第一条记录是什么?这是第一条查询。但我觉得,对于一个完全错误的查询来说,这是一个错误的结果。。!你怎么说?这个问题没有错。只是您没有在服务器中启用
ONLY\u FULL\u GROUP\u BY
。因此,服务器通过计算表中的所有记录并根据设置索引的字段显示第一条记录来执行查询,因此在这种情况下,
Min-Lin Diecast
我理解,但让我知道为什么它会显示产品供应商如果您运行此查询
SELECT-productCode,根据productCode ASC从产品订单中选择productVendor,第一条记录是什么?这是第一个查询。但我觉得,对于一个完全错误的查询来说,这是一个错误的结果。。!你怎么说?这个问题没有错。只是您没有在服务器中启用
ONLY\u FULL\u GROUP\u BY
。因此,服务器通过计算表中的所有记录并根据设置索引的字段显示第一条记录来执行查询,因此在本例中,
Min-Lin Diecast
我知道它没有group by。。。!但是,请让我知道为什么它只显示该产品的供应商。。!因为您使用了计数功能,所以当您按产品代码订购数据时,它将为您提供计数并检查Min Lin Diecast是否是select输出的第一个条目。因此,它将使用dataGot的计数重新返回查询的第一行yaar。。。!谢谢你,萨哈什。。!但onething是该结果中的缺陷,因为计数与该产品供应商无关,它必须将空值作为productVendor列,否则它不应接受right??对于完全错误的查询,这是一个错误的结果,…我觉得不,如果您不指定group by子句,不管产品供应商是什么,mysql都会给出所有tows tabl的计数。所以,如果您想了解每个产品的计数,就必须指定GROUPBY子句,因为它没有GROUPBY。。。!但是,请让我知道为什么它只显示该产品的供应商。。!因为您使用了计数功能,所以当您按产品代码订购数据时,它将为您提供计数并检查Min Lin Diecast是否是select输出的第一个条目。因此,它将使用dataGot的计数重新返回查询的第一行yaar。。。!谢谢你,萨哈什。。!但onething是该结果中的缺陷,因为计数与该产品供应商无关,它必须将空值作为productVendor列,否则它不应接受right??对于完全错误的查询,这是一个错误的结果,…我觉得不,如果您不指定group by子句,不管产品供应商是什么,mysql都会给出所有tows tabl的计数。所以,如果您想计算每个产品供应商的数量,就必须指定GROUPBY子句