ResultSet操作

时间:2016-05-30 21:08:35

标签: java mysql jdbc resultset

mysql> SELECT mi.foodName, mi.price, mi.calories, mi.specialComments, 
ind.ingredient FROM FoodTruck ft LEFT JOIN 
Menu mi ON mi.truckID = ft.truckID LEFT JOIN Ingredients ind ON 
ind.menuID = mi.menuID;
+----------------------+-------+----------+-----------------+-----------------+
| foodName             | price | calories | specialComments | ingredient      |
+----------------------+-------+----------+-----------------+-----------------+
| NULL                 |  NULL |     NULL | NULL            | NULL            |
| NULL                 |  NULL |     NULL | NULL            | NULL            |
| dustins dark rum     |   3.5 |      285 | yummy           | dark rum        |
| dustins dark rum     |   3.5 |      285 | yummy           | ice             |
| rad rachels rumchata |     3 |      375 | dairy free      | rumchata        |
| rad rachels rumchata |     3 |      375 | dairy free      | almond milk     |
| rad rachels rumchata |     3 |      375 | dairy free      | chocolate syrup |
| rad rachels rumchata |     3 |      375 | dairy free      | ice             |
| NULL                 |  NULL |     NULL | NULL            | NULL            |
| NULL                 |  NULL |     NULL | NULL            | NULL            |
+----------------------+-------+----------+-----------------+-----------------+
10 rows in set (0.01 sec)

所以,这是mySql查询,结果通过PreparedStatement保存在ResultSet中。我怎样才能获得信息?我知道我可以:while(rs.next()) { int x = resultSet.getInt(); String y = resultSet.getString();}

但有没有办法在处理resultSet时不重复foodName,price,calories和specialComments?我只需要dustins dark rumrad rachels rumchata,然后是每种成分。基本上,正如您从我的查询中看到的,这是基于来自第三个的信息从两个不同的表连接起来的。所以...它有点复杂。不确定如何继续或者我的sql查询是否可以进行微调...谢谢!!

1 个答案:

答案 0 :(得分:0)

您无法在1个查询中执行此操作。您可以执行2个查询(一个用于菜单,第二个用于成分。)。

您的另一个选择是将GROUP_CONCAT函数与GROUP BY子句结合使用。见Can I concatenate multiple MySQL rows into one field?