почему этот интересный результат с этим запросом 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, все в порядке, Но я не понимаю, почему именно это проявил этот поставщик. (это не первая запись).

может любой орган объяснить мне, почему ..

0
добавлено отредактировано
Просмотры: 1
de

3 ответы

потому что у вас нет предложения GROUP BY , заставляя его иметь только 1 запись.

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

Если вы включите ONLY_FULL_GROUP_BY в mysql, ваш запрос не будет выполнен.

3
добавлено
+1 Хорошее объяснение
добавлено автор IT ppl, источник
если вы запустите этот запрос SELECT productCode, productVendor из продуктов ORDER BY productCode ASC , какова будет первая запись?
добавлено автор John Woo, источник
запрос не является ошибочным. просто вы не включили ONLY_FULL_GROUP_BY на своем сервере. поэтому сервер выполняет запрос, подсчитывая все записи в вашей таблице и отображая первую запись в соответствии с тем, в каком поле вы установили индекс, поэтому в этом случае Min Lin Diecast
добавлено автор John Woo, источник
@Chella, пожалуйста.
добавлено автор John Woo, источник
Я понял, но дайте мне знать, почему он показал, что поставщик продукта
добавлено автор Chella, источник
Это первый запрос. Но я чувствую, что ... это неправильный результат для совершенно неправильного запроса ..! что ты говоришь??
добавлено автор Chella, источник
+1 kudos и спасибо ..! за ваше объяснение
добавлено автор Chella, источник

Попробуй это:

SELECT productVendor,count(productCode) 
FROM products 
GROUP BY productVendor
ORDER BY productCode;
2
добавлено
Поскольку вы использовали функцию COUNT, она даст вам счет и проверит Min Lin Diecast - это первая запись вашего выбранного вывода при заказе данных по коду продукта. Таким образом, он перезапустит первую строку запроса с подсчетом данных
добавлено автор Saharsh Shah, источник
Нет, MySQL дает счет всех буксировок tabl, если вы не укажете group by clause независимо от того, что является продуктом. Поэтому вам нужно указать предложение Group by, если вы хотите рассчитывать на поставщика продуктов eeach
добавлено автор Saharsh Shah, источник
Я знаю, что у нее нет группы ...! но дайте мне знать, почему это показало, что Product vendoronly ..!
добавлено автор Chella, источник
Получил это yaar ...! Спасибо, сахар.
добавлено автор Chella, источник
но что-то является недостатком в этом результате, так как счет не связан с этим поставщиком продукта. Он должен дать нулевое значение как столбец productVendor, или он не должен принимать правильно? это неправильный результат для совершенно неправильного запроса, я чувствую
добавлено автор Chella, источник

Поскольку вы не добавляете предложение GROUP BY в запросе и в инструкции SELECT, у вас есть два столбца productVendor и productCode, мой вопрос в том, хотите ли вы узнать только количество productCode, а затем, почему вы выбираете столбец productVendor, потому что всегда значение productVendor будет первое значение этого столбца.

Поэтому, если вы хотите подсчитать весь товарный код, productVendor мудрый, вы должны использовать это предложение GROUP BY

     SELECT productVendor,count(productCode) 
     FROM   products 
     GROUP BY productVendor
     ORDER BY productCode
0
добавлено