【问题标题】:Subquery using JDBC?使用 JDBC 的子查询?
【发布时间】:2012-03-16 00:33:00
【问题描述】:

我的 java 程序中有这样的查询 -

SELECT * FROM conversation WHERE user_id != 1 AND conversation_id IN 
( SELECT conversation_id FROM conversation WHERE user_id = 1)

这使用 jdbc 在结果中返回 0 行。但是,如果我将其复制并粘贴到 phpmyadmin 中,它可以正常工作。那么到底出了什么问题呢?

我已将 ?allowMultiQueries=true 添加到我的 jdbc 连接字符串中,以查看这是否会产生影响,但它没有。

编辑:

这是我的桌子的样子。我希望在与用户 1 的对话中选择用户的 ID。我刚刚注意到我遗漏了 !在 != 上面的查询中,我现在把它放进去。所以有人知道为什么这适用于 phpmyadmin 而不是 jdbc?

【问题讨论】:

  • 你为什么不想加入?这当然有效。
  • jdbc 调用是什么样的?任何输入还是 1 是 jdbc 中查询的一部分?
  • 您的子查询没有任何意义。它应用与外部查询相同的条件,但具有额外查询的开销。您不需要为子查询设置 allowMultiQueries=true。
  • 我已经编辑了我的帖子,我输入了 = 而不是 !=
  • 我认为allowMultiQueries 并不重要。这是一个碰巧有一个子查询的查询——它不是两个查询。您仍然可以将其作为联接来执行,但这并不能回答您的问题-只是避免了它。也就是说,我对你的问题没有答案。 :)

标签: java mysql jdbc


【解决方案1】:

您是否在 JDBC 和 phpmyadmin 中使用相同的凭据和相同的数据库登录?到过那里,完成了 - 登录到不同的(和空的)数据库,无法弄清楚查询失败的原因。

【讨论】:

  • @Carsten 等人为什么不赞成投票?如果 OP 是真正复制/粘贴查询并且 Java 中没有错误或任何 SQLExceptions,则问题可能不在查询语法中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多