gpt4 book ai didi

mysql - SQL:返回每个集合/商店 30 天之前的第一个条目

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

我有下面的 SQL,我想做的是返回每个集合/商店找到的第一个超过 30 天的条目,目前下面的 SQL 将为我提供 30 天前的所有内容或更多。

我的问题是尝试为每个集合/商店仅返回一个条目,并不总是每天都有条目。

下面的

v_set_price_history数据是以下SQL当前返回的结果。

CREATE VIEW `v_set_price_history` AS
SELECT `spr`.`spr_id` AS `vph_id`
, `spr`.`spr_set_id` AS `vph_set_id`
, `spr`.`spr_price` AS `vph_price`
, `spr`.`spr_str_id` AS `vph_store`
, DATE(`spr`.`spr_added`) AS `vph_date`
, DATE(`spr`.`spr_last_update`) AS `vph_update`
FROM `td_set_price` `spr`
LEFT JOIN `td_set` `set` ON `spr`.`spr_set_id` = `set`.`set_id`
WHERE `spr`.`spr_added`< DATE_SUB(NOW(), INTERVAL 30 DAY)
AND `spr`.`spr_id` = (
SELECT MAX(`spr2`.`spr_id`)
FROM `td_set_price` `spr2`
WHERE `spr2`.`spr_set_id` = `set`.`set_id`
AND DATE(`spr2`.`spr_added`) = DATE(`spr`.`spr_added`)
)
AND `spr`.`spr_set_id` IN (18, 19)
AND `spr`.`spr_status` = 1
ORDER BY `vph_date` DESC;

v_set_price_history

vph_id          vph_set_id  vph_price   vph_store   vph_date    vph_update
7076 19 99.99 1 2016-05-17
6994 18 129.99 1 2016-05-05 2016-05-09
6201 19 114.99 1 2016-04-27 2016-05-05
5175 19 140.00 7 2016-04-03 2016-06-12
4219 19 112.00 7 2016-03-23 2016-03-29
3962 18 149.99 8 2016-03-21 2016-07-05
3040 19 140.00 7 2016-03-04 2016-03-22
8329 19 129.99 10 2016-02-28 2016-06-13
1744 19 129.99 2 2016-02-12 2016-03-22
1722 19 129.95 4 2016-02-10 2016-07-05
1436 18 134.99 2 2016-02-04
1149 19 129.99 4 2016-01-27 2016-03-18
430 18 123.49 2 2016-01-15 2016-03-18

最佳答案

在 Y.M. 的建议的帮助下设法解决了这个问题,下面的 SQL 返回每个集合/商店的第一个出现时间早于 30 天的事件。

SELECT `spr`.`spr_id` AS `vph_id`
, `spr`.`spr_set_id` AS `vph_set_id`
, `spr`.`spr_price` AS `vph_price`
, `spr`.`spr_str_id` AS `vph_store`
, DATE(`spr`.`spr_added`) AS `vph_date`
, DATE(`spr`.`spr_last_update`) AS `vph_update`
FROM `td_set_price` `spr`
LEFT JOIN `td_set` `set` ON `spr`.`spr_set_id` = `set`.`set_id`
LEFT JOIN `td_store` `str` ON `spr`.`spr_str_id` = `str`.`str_id`
WHERE `spr`.`spr_id` IN (
SELECT MAX(`spr2`.`spr_id`)
FROM `td_set_price` `spr2`
WHERE `spr2`.`spr_added` < DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY `spr2`.`spr_set_id`, `spr2`.`spr_str_id`
)
AND `spr`.`spr_set_id` IN (18,19)
AND `spr`.`spr_status` = 1
ORDER BY `str`.`str_name` ASC;

*对于这个问题,我将其限制为 18 和 19,但在生产中该行将被删除。

关于mysql - SQL:返回每个集合/商店 30 天之前的第一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38193577/

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