[英]Query result as variable in another using jdbc
因为我想优化查询,所以我想放弃连接。 因此,我需要在主查询之前声明一个变量,但我找不到在 jdbc 语句中使用它的解决方案。
原始查询:
SELECT
d.orders
SUM(price * qty) / d.orders
FROM main_table
INNER JOIN (
SELECT SUM(qty) AS orders FROM main_table
WHERE status = 1) d
WHERE status = 1
GROUP BY d.orders
格式化查询:
SET @orders = SELECT SUM(qty) AS orders FROM main_table WHERE status = 1
SELECT
@orders,
SUM(price * qty) / @orders
FROM main_table
WHERE status = 1
我找不到使用jdbc
正确执行此formatted
查询的解决方案。 由于按变量分组,我不确定这是否会正确运行。 另外,我不想使用第一个结果在第二个中将其分成 2 个单独的执行,因为这会增加执行时间和查询次数。
jdbc代码的一部分
val statement = conn.prepareStatement(query)
val rset = statement.executeQuery()
if (rset.next()) {
// read results
}
这是每 10 秒执行一次,因为在实时仪表板中使用。 数据库类型是Impala Kudu
(我正在考虑将查询构建为存储过程,但恐怕 Kudu 不支持它)。 该应用程序是在Scala
中编写的,但使用jdbc
中的Java
来查询数据库。
我已经从查询中删除了一些方法(十进制转换)以优化查询并使其尽可能简单,但我仍然想在那里删除一些无用的连接。 不是唯一的,我还有其他一些类似的查询,因此,小的升级可以带来巨大的好处。
谢谢
我建议使用
SELECT
SUM(qty),
SUM(price * qty)
FROM main_table
WHERE status = 1
当您获得结果时,只需将 java 代码中的第二个值除以第一个值即可。
或者更好:
SELECT
SUM(price * qty) / SUM(qty)
FROM main_table
WHERE status = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.