【发布时间】:2022-01-21 19:39:29
【问题描述】:
我有如下查询以获得购买和销售流量的总和。
SELECT DATE_FORMAT(order_time,'%d')AS date,
SUM(CASE WHEN seller_id = 1 THEN visitor_quantity ELSE 0 END) AS totalSold,
SUM(CASE WHEN buyer_id = 1 THEN visitor_quantity ELSE 0 END) AS totalBought
FROM `tbl_orders`
WHERE buyer_id = 1 OR seller_id = 1
GROUP BY DATE(order_time)
因为我正在寻找在提供的日期范围与 0 之间的所有日期,如果该日期没有任何记录。
所以我正在尝试以下查询
with recursive all_dates(dt) as (
-- anchor
select '2021-12-01' dt
union all
-- recursion with stop condition
select dt + interval 1 day from all_dates where dt + interval 1 day <= '2021-12-31'
)SELECT DATE_FORMAT(order_time,'%d')AS date,SUM(CASE
WHEN seller_id = 1
THEN visitor_quantity
ELSE 0
END) AS totalSold, SUM(CASE
WHEN buyer_id = 1
THEN visitor_quantity
ELSE 0
END) AS totalBought FROM `tbl_orders` WHERE buyer_id = 1 OR seller_id = 1 GROUP BY DATE(order_time)
我找到了查询教程here。
但它在 phpmyadmin 中给我一个名为 Unrecognized statement type. (near with) 的错误,并给出与上图相同的结果。
我的phpmyadmin和marialdb版本信息是这样的。
如果这里有人可以帮助我,请告诉我
谢谢!
【问题讨论】:
-
看起来你的访问库(libmysql - 5.6.43)太古老了。
-
@Cid,显示 10.3.32,不行吗?
-
@Cid MariaDB 10.3 了解递归 CTE。请注意 - 错误消息不是 MariaDB 提供的消息。
-
这是一个 PhpMyAdmin 错误。它已在 5.5.0 中修复。