gpt4 book ai didi

mysql - 根据输入参数计数检索许多结果

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

我想选择 3 个不同的单一日期的房间价格。我有日期和 room_id。PRCES_CAL表如下:

id  room_id date_from   date_to   price 
1 1 2019-03-01 2019-04-01 100
2 1 2019-04-02 2019-06-30 200
3 1 2019-07-01 2019-08-31 400
4 1 2019-09-01 2019-10-30 300

问题是,当所有三个日期都在同一 date_from - date_to 间隔内时,我的查询返回一行。

例如,要搜索日期 20190327、20190328、20190329 的价格,我使用以下查询:

SELECT price 
FROM PRICES_CAL
WHERE room_id = 1 AND (
(date_from <= 20190327 AND date_to >= 20190327 )
OR (date_from <= 20190328 AND date_to >= 20190328 )
OR (date_from <= 20190329 AND date_to >= 20190329 )
) ORDER by date_from ASC;

不幸的是我只得到一个结果:那就是

price
100

我想检索三行结果,一行对应我提供的每个日期。

除了其他“无希望”的尝试外,我已经尝试过放置“SELECT RAND(),price ...”以便为每个OR条件拥有不同的行,并希望得到 3 个结果,但我仍然检索到 1 个结果。还有这个:

SELECT @mydd, price 
FROM PRICES_CAL
WHERE room_id = 1 AND ( date_from <= @mydd AND date_to >= @mydd )
AND @mydd in (20190327, 20190328, 20190329)
ORDER by date_from;

这不起作用。它给出零结果。一个结果也可以,但主要问题是,当我得到 2 个结果时,我将无法知道我的中间 input_date 属于哪个结果。

我想避免为了性能而执行 2 个不同的语句,或者选择 date_from、date_to、price 并与我的日期进行比较,以确定我的中间输入日期所属的位置。

理想的情况是仅通过一次 query.execute 来解决问题。当检索结果集并从表中选择所有内容时,我可以使用 while 语句中的代码对其进行排序,但我还想了解如何使用查询进行排序。期望的解决方案是获得三个结果

100
100
100

或者更好,

20190327 100
20190328 100
20190329 100

欢迎任何建议。提前致谢。

最佳答案

要获取单独的行,您需要对每个日期运行一个查询,然后UNION 它们。例如:

select *
from (
SELECT '2019-03-27' as date_from, price
FROM PRICES_CAL
WHERE room_id = 1 AND date_from <= '2019-03-27' AND date_to >= '2019-03-27'
UNION
SELECT '2019-03-28' as date_from, price
FROM PRICES_CAL
WHERE room_id = 1 AND date_from <= '2019-03-28' AND date_to >= '2019-03-28'
UNION
SELECT '2019-03-29' as date_from, price
FROM PRICES_CAL
WHERE room_id = 1 AND date_from <= '2019-03-29' AND date_to >= '2019-03-29'
) x
order by date_from ASC;

关于mysql - 根据输入参数计数检索许多结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382211/

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