java - 使用 JDBC 在 MySQL 中使用 UNION

标签 java mysql sql jdbc union

我在使用 UNION 问题时遇到问题:我有 2 个表 TOPIKSUBTOPIK,我执行左连接和右连接,然后使用以下语句将它们合并:

mySqlStmt = "SELECT *
FROM TOPIK
LEFT OUTER JOIN SUBTOPIK
ON TOPIK.IDTOPIK=SUBTOPIK.IDTOPIK
WHERE (TOPIK.TARGETNPMHS LIKE '%0000312100006%'
OR ((TOPIK.TARGETOBJECTNICKNAME LIKE '%OPERATOR KEPALA BAA%'
OR TOPIK.TARGETOBJECTNICKNAME LIKE '%OPERATOR BAA%' )
AND TOPIK.TARGETNPMHS IS NULL))
UNION
SELECT *
FROM TOPIK
RIGHT OUTER JOIN SUBTOPIK
ON TOPIK.IDTOPIK=SUBTOPIK.IDTOPIK
WHERE (SUBTOPIK.NPMHSRECEIVER LIKE '%0000312100006%'
OR ((SUBTOPIK.OBJNICKNAMERECEIVER LIKE '%OPERATOR KEPALA BAA%'
OR SUBTOPIK.OBJNICKNAMERECEIVER LIKE '%OPERATOR BAA%' )
AND SUBTOPIK.NPMHSRECEIVER IS NULL))"

The code above works on mysql workbench, but when i use it in java,

get connection...bla..bla;
stmt =  con.prepareStatement("mySqlStmt");
rs = stmt.executeQuery();
while(rs.next()) {
  String topik_idTopik = ""+rs.getLong("TOPIK.IDTOPIK");
}

我得到了

java.sql.SQLException: Column 'TOPIK.IDTOPIK' not found.

但是TOPIKSUBTOPIK都有这个专栏。

最佳答案

该列的别名是IDTOPIK,您不应该使用完全限定的名称:

stmt =  con.prepareStatement(mySqlStmt);
rs = stmt.executeQuery();
while(rs.next()) {
  String topik_idTopik = ""+rs.getLong("IDTOPIK");
}

关于java - 使用 JDBC 在 MySQL 中使用 UNION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135363/

相关文章:

java - 配置最大池大小 hikaricp hibernate JPA

java - 有人知道 SWT 中的 PropertyEditor 或 PropertyGrid 之类的东西吗?

mysql - 新安装 wampserver 后,MySQL 服务未启动

mysql - SQL 通过对行进行分组获取公共(public)值

c# - QueryOver 上的 GroupBy SqlFunction

java - Android 阻止 onPause 在父类中被调用

php - 具有多个级别的相关表

mysql - 如何从 SAP HANA Studio 向 SAP HANA Vora 虚拟表中插入数据?

mysql - 如何生成随机字符并使用 MySQL 插入?

java - showAsAction ="always"在双 Pane 模式下不起作用