gpt4 book ai didi

Java - 使用别名的 Sql 查询

转载 作者:行者123 更新时间:2023-11-30 06:47:49 26 4
gpt4 key购买 nike

我想从数据库中检索特定列。对于简单的 Select 语句,我可以检索如下所示的列

public String getDbColumnValue(String tableName, String columnName, String applicationNumber) {
String columnValue = null;

try {
PreparedStatement ps = null;
String query = "SELECT " + columnName + " FROM " + tableName +
" WHERE ApplicationNumber = ?;";

ps = conn.prepareStatement(query);
ps.setString(1, applicationNumber);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
columnValue = rs.getString(columnName);
return columnValue;
}
}
catch (Exception ex) {
}
return columnValue;
}

但是,我在查询中使用别名,如下所示。这个查询工作正常。如何在 Java 中使用它来检索特定列

select S.StatusDesc from application A, StatusMaster S 
where A.StatusMasterId = S.StatusMasterId and A.ApplicationNumber = '100041702404'

任何帮助将不胜感激!

最佳答案

我认为您混淆了用于表名的简单别名和用于列名的别名。要解决您的问题,您只需为要选择的每个列添加唯一的名称即可,即使用以下查询:

select S.StatusDesc as sc
from application A
inner join StatusMaster S
on A.StatusMasterId = S.StatusMasterId and
A.ApplicationNumber = '100041702404'

然后使用以下代码并在结果集中查找别名列 sc

PreparedStatement ps = null;
String query = "select S.StatusDesc as sc ";
query += "from application A ";
query += "inner join StatusMaster S ";
query += "on A.StatusMasterId = S.StatusMasterId ";
query += "and A.ApplicationNumber = ?";
ps = conn.prepareStatement(query);
ps.setString(1, applicationNumber);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
columnValue = rs.getString("sc");
return columnValue;
}

注意:我重构了您的查询以使用显式内部联接,而不是使用 where 子句进行联接。这通常被认为是编写查询的更好方法。

关于Java - 使用别名的 Sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43361431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com