MySQL- 如何使用单个 SQL 查询获取同一列的多个值?
MySQL- How to fetch multiple values of same column using a single SQL query?
我需要将结果集中的每个值存储到浮点变量中。目前我正在为此使用多个 SQL 查询。我合并了查询
float Wb_SWLat = 0;
float Wb_NELat = 0;
float Wb_SWLon = 0;
float Wb_NELon = 0;
float Nb_SWLat = 0;
float Nb_NELat = 0;
float Nb_SWLon = 0;
float Nb_NELon = 0;
//Query:
String qryWb = "select zone, SW_lat, SW_lon, NE_lat, NE_lon from tbl_zones";
try {
Statement stmt = (Statement) conn.createStatement();
Wb=stmt.executeQuery(qryWb);
while(Wb.next()){
if (Wb.getString("zone") == "west"){
Wb_SWLat=Wb.getFloat("SW_lat");
Wb_NELat=Wb.getFloat("NE_lat");
Wb_SWLon=Wb.getFloat("SW_lon");
Wb_NELon=Wb.getFloat("NE_lon");
}
else if (Wb.getString("zone") == "north"){
Nb_SWLat=Wb.getFloat("SW_lat");
Nb_NELat=Wb.getFloat("NE_lat");
Nb_SWLon=Wb.getFloat("SW_lon");
Nb_NELon=Wb.getFloat("NE_lon");
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是有效的方法吗?或这样做的正确方法?
下面是我的 MySQL table, tbl_zones:-
pk_id jn zone SW_lat SW_lon NE_lat NE_lon
--------------------------------------------------------------
1 j1 west 9.99404 76.3567 9.99419 76.3572
2 j2 north 9.99419 76.3572 9.99471 76.3573
3 j3 south 9.99384 76.3572 9.99413 76.3573
4 j4 east 9.99413 76.3574 9.99426 76.3577
在 where
子句中使用 OR
运算符。这将使您在 one 查询(和 roundtrip time to DB)中需要 both 行。
现在,为了识别每个获取的行,将 zone
添加到您的 select
语句,并在您的代码中使用 if
子句来识别 ResultSet
对象。
查询应如下所示:
select SW_lat, SW_lon, NE_lat, NE_lon, zone from tbl_zones where zone='west' OR zone='north
我需要将结果集中的每个值存储到浮点变量中。目前我正在为此使用多个 SQL 查询。我合并了查询
float Wb_SWLat = 0;
float Wb_NELat = 0;
float Wb_SWLon = 0;
float Wb_NELon = 0;
float Nb_SWLat = 0;
float Nb_NELat = 0;
float Nb_SWLon = 0;
float Nb_NELon = 0;
//Query:
String qryWb = "select zone, SW_lat, SW_lon, NE_lat, NE_lon from tbl_zones";
try {
Statement stmt = (Statement) conn.createStatement();
Wb=stmt.executeQuery(qryWb);
while(Wb.next()){
if (Wb.getString("zone") == "west"){
Wb_SWLat=Wb.getFloat("SW_lat");
Wb_NELat=Wb.getFloat("NE_lat");
Wb_SWLon=Wb.getFloat("SW_lon");
Wb_NELon=Wb.getFloat("NE_lon");
}
else if (Wb.getString("zone") == "north"){
Nb_SWLat=Wb.getFloat("SW_lat");
Nb_NELat=Wb.getFloat("NE_lat");
Nb_SWLon=Wb.getFloat("SW_lon");
Nb_NELon=Wb.getFloat("NE_lon");
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是有效的方法吗?或这样做的正确方法?
下面是我的 MySQL table, tbl_zones:-
pk_id jn zone SW_lat SW_lon NE_lat NE_lon
--------------------------------------------------------------
1 j1 west 9.99404 76.3567 9.99419 76.3572
2 j2 north 9.99419 76.3572 9.99471 76.3573
3 j3 south 9.99384 76.3572 9.99413 76.3573
4 j4 east 9.99413 76.3574 9.99426 76.3577
在 where
子句中使用 OR
运算符。这将使您在 one 查询(和 roundtrip time to DB)中需要 both 行。
现在,为了识别每个获取的行,将 zone
添加到您的 select
语句,并在您的代码中使用 if
子句来识别 ResultSet
对象。
查询应如下所示:
select SW_lat, SW_lon, NE_lat, NE_lon, zone from tbl_zones where zone='west' OR zone='north