gpt4 book ai didi

mysql - 带数组的 SQL 查询

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

我正在尝试为我的数据库编写查询。

基本上,我有一个包含房间号的字符串数组,我需要将其与另一个包含房间事件的数据库相匹配。我想找到那个房间里发生的下一个事件。前任:我有一个包含 [ZACH102, ZACH103] 的阵列室。我想找到数据库以返回 ZACH102 和 ZACH103 中发生的下一个事件。我知道如何使用下面的查询查找 1 个房间的事件。但是我该如何使用数组来做到这一点呢?

select   name,
eventtime,
(eventtime - currenttime) > 0 as time_from_test
from the_table
where the_table.room = ZACH102
order by time_from_test
limit 1

提前致谢!

编辑:抱歉,如果我的解释不够清楚,但我只想要数组中每个房间中最早的事件。请注意最后的 limit 1

编辑:是的,我把限制 1 放在那里意味着我只想要来自 ZACH 102 的 1 个事件,然后我想要来自 ZACH 103 的 1 个事件。我解释说上面的代码只找到 1 个房间的事件。

最佳答案

在 Sql Server 中,我会使用公用表表达式。但是因为看起来你正在使用 mysql,我会做这样的事情:

select t2.name, t2.room, t2.eventtime, t2.time_from_test
from the_table t1
inner join
(
select name, room,
min(eventtime) as eventtime,
(eventtime - currenttime) > 0 as time_from_test
from the_table
where the_table.room in ('ZACH102', 'ZACH103')
group by name, room
order by time_from_test
) t2 on t2.room = t1.room and t2.name = t1.name

最终您需要动态设置它,而您事先不知道 IN (...) 子句的内容。当那个时候到来时,最好的办法是提前计划,以便您的数组已经存储在某个地方的表中。这会给你两个选择。第一种是在您的 IN (...) 条件中嵌套一个子查询:

select t2.name, t2.room, t2.eventtime, t2.time_from_test
from the_table t1
inner join
(
select name, room,
min(eventtime) as eventtime,
(eventtime - currenttime) > 0 as time_from_test
from the_table
where the_table.room in (select room from shopping_cart where session_key='MySessionKey')
group by name, room
order by time_from_test
) t2 on t2.room = t1.room and t2.name = t1.name

另一种是使用连接:

select t2.name, t2.room, t2.eventtime, t2.time_from_test
from the_table t1
inner join
(
select name, room,
min(eventtime) as eventtime,
(eventtime - currenttime) > 0 as time_from_test
from the_table
inner join shopping_cart on shopping_cart.room = the_table.room
where shopping_cart.session_key = 'MySessionKey'
group by name, room
order by time_from_test
) t2 on t2.room = t1.room and t2.name = t1.name

关于mysql - 带数组的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9742423/

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