gpt4 book ai didi

java - JDBC:多列 IN 查询

转载 作者:行者123 更新时间:2023-12-02 05:03:59 25 4
gpt4 key购买 nike

我有以下疑问:

SELECT
date, userId, value
FROM
tbl_table
WHERE
date = to_date(:date, 'YYYY-MM-DD')
AND
userId = :userId

它允许请求像这样的单个值:

MapSqlParameterSource args = new MapSqlParameterSource();

args.addValue("date", date, Types.VARCHAR);
args.addValue("userId", userId, Types.VARCHAR);

SqlRowSet rowSet = jdbcTemplate.queryForRowSet(SQL_SELECT, args);

jdbcTemplate.queryForRowSet(SQL_SELECT_MARKET_VALUE, args);

这完全没问题,但如果您必须查询许多日期/用户ID对的值,则速度非常慢。

我想使用多列 IN 子句对其进行优化,但是如何通过 JDBC 处理多列列表(或者更好的问题:是否可以使用 JDBC)?

最佳答案

Oracle 支持“in”谓词中的多列:

SELECT
date, userId, value
FROM
tbl_table
WHERE
(date, userId) IN ((to_date(:date1, 'YYYY-MM-DD'), :userId1), (to_date(:date2, 'YYYY-MM-DD'), :userId2))

但是 JDBC 没有提供对语句内参数的良好支持 - 您必须使用 StringBuilder 构建查询或使用描述的一些解决方法 here

关于java - JDBC:多列 IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com