努力应对简单的sql代码。
首先,我有一个选择,它可以正常运行,并产生一行格式为“ hh:mm:ss”(即14:28:10)的Duration列
<sql:query var="newquery" dataSource="jdbc/datbase">
select SEC_TO_TIME(secdiff) as Duration, assetid
from
(select TIMESTAMPDIFF(SECOND, ts, '<%=endt%>') as secdiff, assetid
from
(SELECT * FROM
(select * from logs
where assetid =${ param.assetid }
order by ts desc
)AS T
)AS U
)AS V
group by assetid
</sql:query>
然后我想使用Duration来更新另一个表的第一行中的Duration值,所以我想我必须先设置一个变量-
<c:forEach var="newrow" items="${newquery.rows}">
<c:set var="interval" value="${newrow.Duration}"/>
</c:forEach>
然后仅更新表中的第一行-
<sql:update var="anotherquery" dataSource="jdbc/database">
update duration SET Duration = ${interval} LIMIT 1;
</sql:update>
该操作失败,或者语法错误接近LIMIT 1,或者偶尔显示interval变量缺少字符,即'30:28而不是'14:30:28',这可能是文本变量格式问题。
如果我在MySQL Workbench中键入这些命令,它们将正常工作。
任何帮助表示赞赏。
问候 拉尔夫