我有两个表加入id-column,它们看起来像:
+-------+ | users | +----+--+---+ | id | name | +----+------+ +-------+ | posts | +-------+------+---------+ | id | user_id | message | +----+---------+---------+
SELECT * FROM posts,users WHERE user_id = users.id
然后我尝试获取值:
ResultSet rs = // sql if(rs.next()) { rs.getInt("posts.id"); ... }
但是在执行rs.getInt(“posts.id”)时我得到了sqlException:
java.sql.sqlException: Column 'posts.id' not found.
如何使用JDBC和JavaDB / Derby作为数据库从上面的SQL查询中获取值?
使用ResultSet检索值时,如何区分用户和posts表中的id列?
解决方法
您正在尝试检索id值,但您使用“posts.id”来引用它.别
您只需要列名或别名,而不是表名:
ResultSet rs = // sql if(rs.next()) { rs.getInt("id"); ... }
如果您的列名称本身是“posts.id”,它会起作用,但如果您选择更新表,我建议使用下划线(_)而不是句点.
但是我在两个表中都有一个id列,我如何区分它们?
您需要指定列别名:
SELECT p.id AS post_id,p.name,u.id AS users_id,p.user_id,--redundant due to relationship,omit if possible u.message FROM POSTS p JOIN USERS u ON u.id = p.user_id
…并在Java代码中引用该列别名:
ResultSet rs = // sql if(rs.next()) { rs.getInt("post_id"); ... }
原文地址:https://www.jb51.cc/mssql/78641.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。