gpt4 book ai didi

mysql - 按 max(date) 获取记录,其中 date 可以为 null

转载 作者:行者123 更新时间:2023-11-29 05:50:05 25 4
gpt4 key购买 nike

<分区>

我正在尝试选择每个 user_id 具有最高 date_end 值的行。 date_end 可以为空,在这种情况下我假设当前(或给定的)日期:

数据:

CREATE TABLE `prices_test` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`user_id` int(10) NOT NULL,
`date_end` date DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of prices_test
-- ----------------------------
INSERT INTO `prices_test` VALUES ('2', '2', '2018-11-29', '30000.00');
INSERT INTO `prices_test` VALUES ('3', '6', '2018-07-29', '20000.00');
INSERT INTO `prices_test` VALUES ('4', '18', '2017-12-31', '3999.00');
INSERT INTO `prices_test` VALUES ('7', '18', '2018-03-01', '10000.00');
INSERT INTO `prices_test` VALUES ('10', '6', null, '44000.00');
INSERT INTO `prices_test` VALUES ('13', '62', '2018-08-26', '12000.00');
INSERT INTO `prices_test` VALUES ('16', '62', null, '36500.00');
INSERT INTO `prices_test` VALUES ('17', '68', '2014-06-15', '22000.00');
INSERT INTO `prices_test` VALUES ('18', '69', null, '36500.00');
INSERT INTO `prices_test` VALUES ('19', '60', null, '10000.00');
INSERT INTO `prices_test` VALUES ('20', '68', null, '30000.00');

我正在尝试使用的查询:

SELECT t.* 
FROM prices_test t
INNER JOIN (
SELECT id, user_id, MAX(IFNULL(date_end, '2019-03-21')) AS date_end
FROM prices_test GROUP BY id
) AS max USING (id, date_end);

sql fiddle :http://sqlfiddle.com/#!9/9e61e0/4

问题是我的查询似乎忽略了 MAX()。它选择 id=3 的 user_id,但我希望 id=10,因为 IFNULL(date_end, '2019-03-21') 给 id=10 的日期比 id=3 的 '2018-07-29' 高,对吗?所有其他 ID 在这里也不符合预期。

我做错了什么?

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