SQL 接收行并执行其他查询
SQL receive row and execute other query
我需要一个 sql 函数来计算来自不同表的数据。
有两个表,
tbl_moving
|-----------------------------|
| start_datetime | value |
|-----------------------------|
| 2016-10-05 10:00:00 | 23 |
| 2016-10-05 10:10:00 | 24 |
|-----------------------------|
tbl_execution
|-----------------------------|
| executed_datetime | value |
|-----------------------------|
| 2016-10-05 10:05:00 | true |
| 2016-10-05 10:16:00 | false |
|-----------------------------|
现在我需要 return 一个包含以下数据的数组:
"tbl_moving"."start_datetime",
"tbl_moving"."value",
"tbl_moving"."stop_datetime" (is the next start_datetime (10:10:00),
"tbl_execution"."value" (where executed_datetime is between "tbl_moving"."start_datetime" and the next start_datetime (10:10:00)
我的问题是,我不知道如何接收查询结果
类似于
a = SELECT max(start_datetime) as start_datetime FROM "tbl_moving" WHERE value != 0 ORDER BY sig_datetime DESC GROUP BY start_datetime LIMIT 1;
你不需要一个函数,你可以用一个查询来完成:
select m.*, e.value
from (
select m.start_datetime,
lead(m.start_datetime) over (order by m.start_datetime) as stop_datetime,
m.value
from tbl_moving m
) m
join tbl_execution e
on e.start_datetime between m.start_datetime and m.stop_datetime
我需要一个 sql 函数来计算来自不同表的数据。
有两个表,
tbl_moving
|-----------------------------|
| start_datetime | value |
|-----------------------------|
| 2016-10-05 10:00:00 | 23 |
| 2016-10-05 10:10:00 | 24 |
|-----------------------------|
tbl_execution
|-----------------------------|
| executed_datetime | value |
|-----------------------------|
| 2016-10-05 10:05:00 | true |
| 2016-10-05 10:16:00 | false |
|-----------------------------|
现在我需要 return 一个包含以下数据的数组:
"tbl_moving"."start_datetime",
"tbl_moving"."value",
"tbl_moving"."stop_datetime" (is the next start_datetime (10:10:00),
"tbl_execution"."value" (where executed_datetime is between "tbl_moving"."start_datetime" and the next start_datetime (10:10:00)
我的问题是,我不知道如何接收查询结果
类似于
a = SELECT max(start_datetime) as start_datetime FROM "tbl_moving" WHERE value != 0 ORDER BY sig_datetime DESC GROUP BY start_datetime LIMIT 1;
你不需要一个函数,你可以用一个查询来完成:
select m.*, e.value
from (
select m.start_datetime,
lead(m.start_datetime) over (order by m.start_datetime) as stop_datetime,
m.value
from tbl_moving m
) m
join tbl_execution e
on e.start_datetime between m.start_datetime and m.stop_datetime