Mysql 选择查询计数和 Distinct 无法正常工作
Posted
技术标签:
【中文标题】Mysql 选择查询计数和 Distinct 无法正常工作【英文标题】:Mysql select query count & Distinct are not working properly 【发布时间】:2022-01-05 02:52:18 【问题描述】:我正在使用 Laravel 8 开发一个电子商务网站。我编写了以下脚本来找出单个订单号下的总价格和总数量。从以下脚本获取错误,请帮助我。 *首先我写行mysql然后我将转换laravel查询生成器。
SELECT COUNT (total_price) as totaPrice, COUNT (productqty) as proQnty
FROM (SELECT DISTINCT order_id FROM orderDetails)
LEFT JOIN ordertbl
ON ordertbl.id = orderDetails.order_id;
【问题讨论】:
【参考方案1】:我猜你想对价格和数量求和,所以使用 SUM()
聚合函数。
此外,您应该将ordertbl
与orderDetails
进行LEFT
连接,而不是相反:
SELECT ot.id,
SUM(od.total_price) AS totaPrice,
SUM(od.productqty) AS proQnty
FROM ordertbl ot LEFT JOIN orderDetails od
ON ot.id = od.order_id
WHERE ot.id = ?
GROUP BY ot.id;
或者,没有连接:
SELECT SUM(total_price) AS totaPrice,
SUM(productqty) AS proQnty
FROM orderDetails
WHERE order_id = ?;
将?
替换为所需订单的id
。
【讨论】:
【参考方案2】:在您的原始中缺少子查询的表名 alis .. 您的原始查询应该是
SELECT COUNT(total_price) as totaPrice, COUNT(productqty) as proQnty
FROM (
SELECT DISTINCT order_id FROM orderDetails
) T
LEFT JOIN ordertbl ON ordertbl.id = T.order_id;
【讨论】:
抱歉运行此脚本显示以下错误“mysql.proc 的列数错误。预期为 21,找到 20。使用 MariaDB 100108 创建,现在运行 100421。请使用 mysql_upgrade 修复此错误”跨度> 答案已更新 .. 删除 count 和 ( .. 之间的空格 .. 告诉我 SELECT DISTINCT order_id, COUNT(total_price) as totaPrice, COUNT(productqty) as proQnty FROM orderDetails LEFT JOIN ordertbl ON ordertbl.id = orderDetails.order_id;这是正确的脚本。好好工作。我还有一个脚本想和你讨论。以上是关于Mysql 选择查询计数和 Distinct 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章