我已经研究了很长一段时间,看来我可能误解了 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/