我有一个数据库,其中多个行具有相同的值。 例如,
Column1 Column2
A X A Y A Z
结果集将第2列的所有值作为单个字符串。 如何从数据库(或结果集)中获取每个唯一值?
(我用java)
提前致谢。
答案 0 :(得分:0)
看看
SELECT columna ,
(SELECT GROUP_CONCAT(DISTINCT columnb SEPARATOR ' ') FROM test
WHERE columna=t.`columna` ) as columnb_string
FROM `test` t GROUP BY columna
答案 1 :(得分:-2)
您使用什么查询/代码将第二列全部作为字符串?在数据库系统本身测试您的查询总是一个好主意,或者您可以使用SQLFiddle来确保您从查询中获得期望的结果
来自Doc:
的其余部分ResultSet对象维护指向其当前数据行的游标。最初,光标位于第一行之前。下一个方法将游标移动到下一行,因为当ResultSet对象中没有更多行时它返回false,它可以在while循环中用于迭代结果集。
从数据库获取值的典型方法是
//Construct a statement
String yourStatement = "Select COLUMN_B from aTable WHERE COLUMN_A LIKE 'A'" // EDITED
PreparedStatement aPrepStatement = null;
ResultSet rs = null;
List<String> aList = new ArrayList<String>(); // ADDED
try
{
aPrepStatement = yourConnection.prepareStatement(yourStatement)
rs = aPrepStatement.executeQuery();
while(rs.next())
{
// You are now in the first row of data depending on your query
// String column1 = rs.getString(1); // 'A' In the table you descrbed above (for first iteration
String column2 = rs.getString(1); // 'X' In the table you descrbed above
// Now do what you need to with the data
aList.add(column2) // EDITED
}
}
catch (Exception ex) {
// deal with any exceptions that arise
ex.printStackTrace();
}
finally
{
//Close your Resultset and prepared statement (this will possibly need a try catch block also
if(rs != null)
rs.close();
if(aPrepStatement != null)
aPrepStatement.close();
}
// ADDED BELOW
for(String s: aList)
System.out.println(s) // should give output
// X
// Y
// Z
的文档