mysql - 查询左连接取数据问题-Mysql
问题描述
我用左连接加入两个表。当我用 Select 全选时,所有行都来了(query1)。但是当我使用 select 拉出一些行时,我只加载了一个数据,而不是图 1 中的所有数据都加载了。是什么原因?
加载所有数据查询1
查询1:
SELECT *
FROM oc_review AS OYLAMA
JOIN oc_product AS PRODUCT
ON (PRODUCT.product_id = OYLAMA.product_id)
INNER JOIN oc_product_to_category AS KATEGORI
ON (KATEGORI.product_id = PRODUCT.product_id)
WHERE KATEGORI.category_id = 69
仅加载 1 个数据查询2
查询2:
SELECT
AVG(ALL OYLAMA.rating) AS ORTALAMA,
COUNT(OYLAMA.rating) AS TOPLAMOY
FROM oc_review AS OYLAMA
JOIN oc_product AS PRODUCT
ON (PRODUCT.product_id = OYLAMA.product_id)
INNER JOIN oc_product_to_category AS KATEGORI
ON (KATEGORI.product_id = PRODUCT.product_id)
WHERE KATEGORI.category_id = 69
解决方案
一旦你引入聚合函数,如AVG()
和 , MySQL 就会创建一个单独的组,所有记录都会放在其中COUNT()
。另请参阅问题MySQL Aggregate Functions without GROUP BY 子句以获取更多信息。
您可能想要做的是明确指定一个GROUP BY
子句并将您拥有的字段添加GROUP BY
到SELECT
例如:
SELECT
PRODUCT.product_id,
AVG(ALL OYLAMA.rating) AS ORTALAMA,
COUNT(OYLAMA.rating) AS TOPLAMOY
FROM oc_review AS OYLAMA
JOIN oc_product AS PRODUCT
ON(PRODUCT.product_id = OYLAMA.product_id)
INNER JOIN oc_product_to_category AS KATEGORI
ON (KATEGORI.product_id = PRODUCT.product_id)
WHERE KATEGORI.category_id = 69
GROUP BY PRODUCT.product_id
推荐阅读
- firebase - Flutter / Firebase 数据库,使用 get() 进行查询返回所有项目,其中 once() 仅匹配项
- python-3.x - 如何使用 selenium python 处理 err_blocked_by_client
- excel - 在别人的onedrive中的excel文件中添加行
- java - 如何将 dd.mm.yy 类型的日期转换为 dd/mm/yy?
- spring-boot - 如何使用参数动态查询(原生查询)
- node.js - 我怎么解决这个问题?: 加载资源失败: net::ERR_INSUF
- python - 在Python中单击通知(win10Toast)时,有什么方法可以执行任务?
- java - 测试仅使用其他服务类方法的服务类
- salesforce - SalesForce B2C Commerce :: OCAPI :: 多件货物处理
- node.js - Github 中的 Firebase creditentials.json 文件?