【问题标题】:Unrecognized statement type. (near with)无法识别的语句类型。 (附近)
【发布时间】: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 中修复。

标签: mysql sql


【解决方案1】:

这是一个 PhpMyAdmin bug。您需要升级到 5.5.0 才能获得修复。

【讨论】:

  • 先生您好!我已经尝试使用 PHP 进行相同的查询,但它仍然只显示两个日期,分别为 18 和 19。所以我认为我的查询有问题
  • 这是一个无关的问题。
  • 好的,先生!非常感谢!让我找到它的查询解决方案。谢谢!
  • 您在 CTE 和表格之间缺少 LEFT JOIN,就像您链接到的教程中一样。
猜你喜欢
  • 1970-01-01
  • 2019-01-16
  • 2021-11-24
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2019-03-13
相关资源
最近更新 更多