我在我的项目中使用了odbc-jdbc bridge
,我需要从database
中选择2条数据并将数据保存到我variables
侧{2} java
应用。这是我的表的一个例子。
SITE_ID ------- DEV_ID ------- SCHEDULE_TIME ------- VALUE_ENUM ------- IDX
---------------------------------------------------------------------------
1 3000 09:30:00 1 1
1 3000 11:30:00 0 2
1 3000 12:00:00 1 3
1 3000 14:00:00 0 4
1 3000 18:30:00 1 5
1 3000 20:30:00 0 6
1 4000 05:00:00 1 1
1 4000 13:30:00 0 2
1 4000 16:30:00 1 3
1 4000 18:30:00 0 4
对于select SCHEDULE_TIME
IDX
DEV_ID
的最后2 3000
,我想要做的是18:30:00 and 20:30:00
,所以我想保存select SCHEDULE_TIME from ARRAY_BAC_SCH_Schedule order by IDX desc limit 1 where DEV_ID = 3000
select SCHEDULE_TIME from ARRAY_BAC_SCH_Schedule order by IDX desc limit (1,1) where DEV_ID = 3000
SELECT TOP 1 SCHEDULE_TIME FROM ARRAY_BAC_SCH_Schedule WHERE DEV_ID = 3000 ORDER BY IDX DESC
一个变量,我尝试过的一些陈述的例子是:
{{1}}
现在我只是担心如何在我在java端实现它之前让select语句在Query工具中工作。谢谢,牛肉。
答案 0 :(得分:1)
也许我错过了什么。你有没有理由不跑:
select SCHEDULE_TIME from ARRAY_BAC_SCH_Schedule order by IDX desc limit 2 where DEV_ID = 3000
这应该返回2行,包含20:30:00和18:30:00。
答案 1 :(得分:1)
如果是mysql
那么
select SCHEDULE_TIME from ARRAY_BAC_SCH_Schedule where DEV_ID = 3000 order by IDX desc limit 2
答案 2 :(得分:1)
我认为
SELECT TOP 2 * from (select SCHEDULE_TIME FROM ARRAY_BAC_SCH_Schedule WHERE DEV_ID = 3000 ORDER BY IDX DESC) as inner
答案 3 :(得分:1)
根据您的数据库,细节会有所不同,但您的查询应如下所示:
SELECT TOP 2 SCHEDULE_TIME
FROM ARRAY_BAC_SCH_Schedule
WHERE DEV_ID = 3000
ORDER BY IDX Desc
或者,在一行:
SELECT TOP 2 SCHEDULE_TIME FROM ARRAY_BAC_SCH_Schedule WHERE DEV_ID = 3000 ORDER BY IDX Desc
答案 4 :(得分:1)
对于SQL Server,您应该使用
SELECT TOP 2 SCHEDULE_TIME from (select SCHEDULE_TIME FROM ARRAY_BAC_SCH_Schedule WHERE DEV_ID = 3000 ORDER BY IDX DESC) as inner
像Hemal告诉你的那样。
小心查询
select TOP 2 SCHEDULE_TIME FROM ARRAY_BAC_SCH_Schedule WHERE DEV_ID = 3000 ORDER BY IDX DESC
因为那是错误的。 SQL Server执行顶部操作,然后执行命令。
在PostgreSQL或MySQL中,您应该使用限制和查询结束。限制在where部分之后。
在Oracle中,您应该在where部分内使用rownum。
答案 5 :(得分:1)
你可以用subquerys做到这一点:
select * from array_bac_sch_schedule where (value_enum,idx) in (select value_enum,idx from array_bac_sch_schedule where dev_id=3000) order by schedule_time desc limit 2;
我将value_enum和idx作为主键。