java - 如何使用内连接获取 'next column'值?

标签 java mysql foreign-keys primary-key inner-join

我已经研究了很长一段时间,看来我可能误解了 MySQL 中的内连接是如何工作的。

我有 3 张 table :

用户表:

UserID        UserName        Hash        UserUni        UserHousing
1               John         @123eq..       FK               FK
2               Bob          !S91ka..       FK               FK
...

外键与以下两个表的 PK(分别为 UniID 和 HousingID)相关:

大学列表:

UniID        UniName 
1           Yale  
2           Penn  
...

住房 list :

HousingID   HousingName        UniID 
1           Dorm_1             FK
2           Dorm_2             FK
...

当然,这些 FK 是大学列表中的 PK (UniID)

我想要做的是查询 id、散列、UserUni 和 UserHousing ,即不是键。这就是我现在正在玩的:

"SELECT UserTable.Hash, UserTable.UserID, UserTable.UserUni, UserTable.UserHousing "
        + "FROM UserTable "
        + "INNER JOIN UniversitiesList "
        + "ON UserTable.UserUni = UniversitiesList.UniID "                                        
        + "INNER JOIN HousingList " 
        + "ON UserTable.UserHousing = HousingList.HousingID "   
        + "WHERE UserTable.UserName = John"

我想检索类似于 1, @123eq, Yale, Dorm_1 的内容,但我一直得到 1, @123eq, 1, 1

我正在使用 Java,因此这就是我获得结果的方式:

if (result.next()) {
    hash = result.getString(1);
    id = result.getInt(2);
    uni = result.getString(3);
    housing = result.getString(4);
}

知道我做错了什么吗?

最佳答案

尝试将您的查询更改为:

"SELECT UserTable.Hash, UserTable.UserID, UniversitiesList.UniName, HousingList.HousingName "
        + "FROM UserTable "
        + "INNER JOIN UniversitiesList "
        + "ON UserTable.UserUni = UniversitiesList.UniID "                                        
        + "INNER JOIN HousingList " 
        + "ON UserTable.UserHousing = HousingList.HousingID "   
        + "WHERE UserTable.UserName = John"

正如所写,您只需要 UserTable 中的列,而不是其他表。据我所知,连接看起来不错...

关于java - 如何使用内连接获取 'next column'值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225275/

相关文章:

java - com.fasterxml.jackson.databind.exc.InvalidDefinitionException : No value type configured for ObjectReader

mysql - 如何在 SQL select 中正确写入 ORDER BY ... DESC?

Mysql 分析项并选择匹配的配置文件

python - Django - 将模型相互关联

mysql - 更新 MySql 中的现有行并处理重复的键

具有非原始类型的 Java equal 和 hashCode

java - 在 Android 中以本地化格式从字符串中单独显示日期和时间

java - 查找本地机器 IP 地址,无误报

java - 如何使用Hibernate和JPA注释保存外键值

mysql - 如何在 MySQL 中创建小型关系数据库?