11 个解决方案
#1
查的时候就过滤
select distinct ......
select distinct ......
#2
查寻有重复字段 会被重命名的。好像是字段名字+1吧,,,你取第一个用原名取第二个加个1就是了。。
#3
to:kevinliuu(@。@)
distinct好像不行吧,这样把其他数据都过滤掉了吧?
我需要其他数据的其中一个字段还保留信息,显示的时候在一个td里显示
distinct好像不行吧,这样把其他数据都过滤掉了吧?
我需要其他数据的其中一个字段还保留信息,显示的时候在一个td里显示
#4
to:qczl1224(倾情一世『qczl.ys168.com』)
你说的这个是怎么实现呢 ?能说具体点吗
你说的这个是怎么实现呢 ?能说具体点吗
#5
你的需求实现起来比较麻烦
对于循环取数据的问题,假设第一条记录生成了table的一行,而第二条的id与第一条重复,这时按照你的要求,是要把其他字段追加到第一行中的其他td中,你是这个意思吧?
但实际上第一行的tr已经生成了,不可能在去追加,除非配合js的innerHTML实现,非常麻烦
给你个思路,rs在返回页面前先做一次处理,对于重复id的记录,其他字段追加成一个字段,最后返回给页面的是不重复,并且字段没有缺失的记录
这个应该好做一些
对于循环取数据的问题,假设第一条记录生成了table的一行,而第二条的id与第一条重复,这时按照你的要求,是要把其他字段追加到第一行中的其他td中,你是这个意思吧?
但实际上第一行的tr已经生成了,不可能在去追加,除非配合js的innerHTML实现,非常麻烦
给你个思路,rs在返回页面前先做一次处理,对于重复id的记录,其他字段追加成一个字段,最后返回给页面的是不重复,并且字段没有缺失的记录
这个应该好做一些
#6
我也觉得比较麻烦,想了半天也没有好办法
你给的这个思路似乎不错,但是其中有几点我还不确定
1,rs.next(),判断下一条数据跟上面一条是否重复用什么方式判断呢?
2,追加成一个字段是不是str = str + ","+ str;?
你给的这个思路似乎不错,但是其中有几点我还不确定
1,rs.next(),判断下一条数据跟上面一条是否重复用什么方式判断呢?
2,追加成一个字段是不是str = str + ","+ str;?
#7
你需要使用一个ArrayList存储你的数据
#8
能说具体点吗。。
#9
假设你的表中有3个字段,id, name, age
List list = new ArrayList();
String[] str = new String[3] ; //存放记录
String[] tStr = null ; //临时记录
String tempId = "" ;
//循环取数据
while(rs.next())
{
tempId = rs.getString("id");
if(isInList(tempId, list)) //如果重复id的记录,则追加剩余字段
{
tStr = getArray(tempId, list) ;
tStr[1] += "," + rs.getString("name") ;
tStr[2] += "," + rs.getString("age") ;
list.add(tStr) ; //注意这里,需要在调用getArray时,remove该元素,否则会add重复数据
}
else
{
str[0] = rs.getString("id");
str[1] = ...
str[0] = ...
list.add(str) ;
}
}
//这个方法是判断当前记录的id是否在list中存在
private boolean isInList(String id, ArrayList list)
{
//请自己实现
}
//这个方法是根据id返回list中含有id记录的数组
private String[] getArray(String id, ArrayList list)
{
//请自己实现
}
List list = new ArrayList();
String[] str = new String[3] ; //存放记录
String[] tStr = null ; //临时记录
String tempId = "" ;
//循环取数据
while(rs.next())
{
tempId = rs.getString("id");
if(isInList(tempId, list)) //如果重复id的记录,则追加剩余字段
{
tStr = getArray(tempId, list) ;
tStr[1] += "," + rs.getString("name") ;
tStr[2] += "," + rs.getString("age") ;
list.add(tStr) ; //注意这里,需要在调用getArray时,remove该元素,否则会add重复数据
}
else
{
str[0] = rs.getString("id");
str[1] = ...
str[0] = ...
list.add(str) ;
}
}
//这个方法是判断当前记录的id是否在list中存在
private boolean isInList(String id, ArrayList list)
{
//请自己实现
}
//这个方法是根据id返回list中含有id记录的数组
private String[] getArray(String id, ArrayList list)
{
//请自己实现
}
#10
顶楼上的!
#11
在页面用If判断,多用几个if,id重复则不加td,否则加td,然后第一次最后一次也判断。
#1
查的时候就过滤
select distinct ......
select distinct ......
#2
查寻有重复字段 会被重命名的。好像是字段名字+1吧,,,你取第一个用原名取第二个加个1就是了。。
#3
to:kevinliuu(@。@)
distinct好像不行吧,这样把其他数据都过滤掉了吧?
我需要其他数据的其中一个字段还保留信息,显示的时候在一个td里显示
distinct好像不行吧,这样把其他数据都过滤掉了吧?
我需要其他数据的其中一个字段还保留信息,显示的时候在一个td里显示
#4
to:qczl1224(倾情一世『qczl.ys168.com』)
你说的这个是怎么实现呢 ?能说具体点吗
你说的这个是怎么实现呢 ?能说具体点吗
#5
你的需求实现起来比较麻烦
对于循环取数据的问题,假设第一条记录生成了table的一行,而第二条的id与第一条重复,这时按照你的要求,是要把其他字段追加到第一行中的其他td中,你是这个意思吧?
但实际上第一行的tr已经生成了,不可能在去追加,除非配合js的innerHTML实现,非常麻烦
给你个思路,rs在返回页面前先做一次处理,对于重复id的记录,其他字段追加成一个字段,最后返回给页面的是不重复,并且字段没有缺失的记录
这个应该好做一些
对于循环取数据的问题,假设第一条记录生成了table的一行,而第二条的id与第一条重复,这时按照你的要求,是要把其他字段追加到第一行中的其他td中,你是这个意思吧?
但实际上第一行的tr已经生成了,不可能在去追加,除非配合js的innerHTML实现,非常麻烦
给你个思路,rs在返回页面前先做一次处理,对于重复id的记录,其他字段追加成一个字段,最后返回给页面的是不重复,并且字段没有缺失的记录
这个应该好做一些
#6
我也觉得比较麻烦,想了半天也没有好办法
你给的这个思路似乎不错,但是其中有几点我还不确定
1,rs.next(),判断下一条数据跟上面一条是否重复用什么方式判断呢?
2,追加成一个字段是不是str = str + ","+ str;?
你给的这个思路似乎不错,但是其中有几点我还不确定
1,rs.next(),判断下一条数据跟上面一条是否重复用什么方式判断呢?
2,追加成一个字段是不是str = str + ","+ str;?
#7
你需要使用一个ArrayList存储你的数据
#8
能说具体点吗。。
#9
假设你的表中有3个字段,id, name, age
List list = new ArrayList();
String[] str = new String[3] ; //存放记录
String[] tStr = null ; //临时记录
String tempId = "" ;
//循环取数据
while(rs.next())
{
tempId = rs.getString("id");
if(isInList(tempId, list)) //如果重复id的记录,则追加剩余字段
{
tStr = getArray(tempId, list) ;
tStr[1] += "," + rs.getString("name") ;
tStr[2] += "," + rs.getString("age") ;
list.add(tStr) ; //注意这里,需要在调用getArray时,remove该元素,否则会add重复数据
}
else
{
str[0] = rs.getString("id");
str[1] = ...
str[0] = ...
list.add(str) ;
}
}
//这个方法是判断当前记录的id是否在list中存在
private boolean isInList(String id, ArrayList list)
{
//请自己实现
}
//这个方法是根据id返回list中含有id记录的数组
private String[] getArray(String id, ArrayList list)
{
//请自己实现
}
List list = new ArrayList();
String[] str = new String[3] ; //存放记录
String[] tStr = null ; //临时记录
String tempId = "" ;
//循环取数据
while(rs.next())
{
tempId = rs.getString("id");
if(isInList(tempId, list)) //如果重复id的记录,则追加剩余字段
{
tStr = getArray(tempId, list) ;
tStr[1] += "," + rs.getString("name") ;
tStr[2] += "," + rs.getString("age") ;
list.add(tStr) ; //注意这里,需要在调用getArray时,remove该元素,否则会add重复数据
}
else
{
str[0] = rs.getString("id");
str[1] = ...
str[0] = ...
list.add(str) ;
}
}
//这个方法是判断当前记录的id是否在list中存在
private boolean isInList(String id, ArrayList list)
{
//请自己实现
}
//这个方法是根据id返回list中含有id记录的数组
private String[] getArray(String id, ArrayList list)
{
//请自己实现
}
#10
顶楼上的!
#11
在页面用If判断,多用几个if,id重复则不加td,否则加td,然后第一次最后一次也判断。