在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
你是如何傳遞數組?它是一個SQL數組還是使用不同的語言,然後調用該函數? – Gage 2012-03-16 18:21:32
我有一個來自數據庫查詢的結果,我在這裏解析php中的信息,並將房間的名稱放入數組中。然後,我想要使用該數組進行上面的查詢 – maknelly 2012-03-16 18:24:10
另外它time_from_test是必要的,還是您只需要從當前系統時間查找下一個事件? – Gage 2012-03-16 19:54:44