gpt4 book ai didi

mysql - phpMyAdmin 不正确的结果计数

转载 作者:可可西里 更新时间:2023-11-01 08:31:45 24 4
gpt4 key购买 nike

在 phpMyAdmin 中偶然发现了一个潜在的错误(?),虽然这更可能是我对 MySQL 的误解,所以希望有人能阐明这种行为。

使用以下架构

CREATE TABLE IF NOT EXISTS `mlfsql_test` (
`id` int(11) NOT NULL,
`frequency_length` smallint(3) DEFAULT NULL,
`frequency_units` varchar(10) DEFAULT NULL,
`next_delivery_date` date DEFAULT NULL,
`last_created_delivery_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `mlfsql_test`
(`id`, `frequency_length`, `frequency_units`, `next_delivery_date`, `last_created_delivery_date`) VALUES
(1, 2, 'week', '2014-06-25', NULL),
(2, 3, 'day', '2014-06-27', NULL),
(3, 1, 'week', '2014-08-08', NULL),
(4, 2, 'day', NULL, '2014-06-26');

我想根据当前设置的交货日期或上次交货日期并考虑频率来确定即将交货的行。

想出以下查询,效果很好:

    SELECT *, IF (next_delivery_date IS NOT NULL, next_delivery_date,
CASE frequency_units
WHEN 'day' THEN DATE_ADD(last_created_delivery_date, INTERVAL frequency_length DAY)
WHEN 'week' THEN DATE_ADD(last_created_delivery_date, INTERVAL frequency_length WEEK)
WHEN 'month' THEN DATE_ADD(last_created_delivery_date, INTERVAL frequency_length MONTH)
END)
AS next_order_due_date
FROM mlfsql_test
HAVING next_order_due_date IS NULL OR (next_order_due_date BETWEEN CURDATE() AND CURDATE() + INTERVAL 10 DAY)

根据当前表中的数据,我希望它返回 3 行,但 phpMyAdmin 指出总共有 4 行结果,尽管它只显示 3...

picture 1

我发现,如果我在查询中添加一个 WHERE 子句,例如 WHERE 1,它将返回 3 行,并声明总共有 3 行。

enter image description here

为什么在没有 WHERE 子句的情况下返回的行数不正确?我假设没有一个 phpMyAdmin 假设所有行都将匹配,但只返回实际匹配的那些,所以计数是错误的?任何帮助将不胜感激。

编辑 phpMyAdmin 版本 4.2.0

最佳答案

这似乎是 phpMyAdmin v4.2.x 中的错误。我已经打开了错误票(请参阅 Bug #4473 )。我还向他们提出了针对此错误的修复(请参阅 PR #1253)。您也可以申请此 patch在 v4.2.4 中修复它。这很可能会在即将发布的错误修复版本中得到修复,即 v4.2.5。

编辑 1:我的补丁已被接受,此问题已在 v4.2.5(即将发布的次要版本)中修复。

关于mysql - phpMyAdmin 不正确的结果计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com