IN 子句中的多个列 Apache Derby

Posted

技术标签:

【中文标题】IN 子句中的多个列 Apache Derby【英文标题】:Multiple columns in, IN clause Apache Derby 【发布时间】:2018-06-18 22:20:37 【问题描述】:

我有以下 SQL 查询:

SELECT
    ORDER_ID,
    ORDER_CODE
FROM
    ORDERS
WHERE
    (ORDER_ID,SEQUENCE) in ((?,?))

PreparedStatement statement = connection.prepareStatement(sql)

上述代码行在 Oracle 中使用上述查询成功生成了一个 PreparedStatement 对象,但在 Apache Derby 中,它抛出了以下异常:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "," at line 8, column 14.

谁能解释一下如何在 DERBY 的 IN 子句中查询多个列。

参考帖:http://apache-database.10148.n7.nabble.com/Using-IN-clause-with-multiple-columns-td98558.html

谢谢!

【问题讨论】:

请分享真实的查询! 用真实的查询更新了帖子。 现在可以给我们看看你的代码吗? 看起来 Derby 不支持该语法。 为什么不:select order_id,order_code from orders where order_id = ? and sequence = ? 【参考方案1】:

结论:Derby 不支持prepared statement 的多个IN 子句。 (?,?) -- 这种语法会引发错误。

迁移到 H2 数据库进行测试会更好,因为它可以在那里进行并且更强大。

【讨论】:

以上是关于IN 子句中的多个列 Apache Derby的主要内容,如果未能解决你的问题,请参考以下文章

Apache Camel 2.18中的IN子句

where子句中的多个字符匹配

评估 Oracle IN 子句中的多个范围

7_mysql查询之where子句

Pro *C 查询 IN 子句中的多个动态值

IN子句中的Spark sql限制