如果我们不在这条语句后面添加where筛选条件,则视为删除数据表的所有行,这里我们只对这种简单的使用方式加以回顾,并不举例说明。
如果在特定的场景中,需要使用sql语句删除重复的行,那我们应该如何 *** 作呢。这里给出一个具体的例子,例如 Leetcode 196 删除重复的邮箱 中需要我们使用delete命令删除重复的电子邮箱。
首先,需要使用自连接语句筛选出重复的电子邮箱id。
此时,我们将重复的电子邮箱查询出来。
然后,就需要使用delete语句,此时涉及到的是一个多表删除的语句,应该写成如下格式:
我们发现在delete和from之间加入了一个p1,这代表只删除p1表中满足筛选条件的行,而p1代表person,最终就完成了对person表的delete *** 作。
首先,我们仍然需要筛选出重复的电子邮箱的id。
然后,在person删除对应上述的id。
有一个计费表jifei,其中包含的字段有:phone(8位电话号码)、month(月份)、expense(月消费,费用为0表明该月没有产生费用),请你删除jifei表中所有10月份出现的两条相同记录的其中一条记录。
此题目中需要多个字段重复即删除,所以第一步仍然需要筛选出需要删除的行。
然后使用delete删除重复的行。
上述两个步骤实际上删除的所有重复出现的行,但是题目需要删除10月份重复出现两次的记录,所以还需要内联结一个对月份记录的字段。
将查询出来的结果集放到List等集合中,你可以在list集合中进行筛选。如数据库中有User表,列id,uname,upwd.
建立实体User ,
private int id
private String uname
private String upwd
生成set,get方法。
jdbc代码:
。。。
List list = new ArrayList()
while(rs.next){
User use = new User()
use.setId(rs.getInt(1))
use.setUname(rs.getString(2))
use.setUpwd(rs.getString(3))
list.add(use)
}
...(关闭数据库 *** 作)
//如在别的页面上对这个结果集进行访问,就把这个List放到scope中,如
//session.setAttribute("list",list)
//在scope中获得list
List list = (List)session.getAttribute("list")
//继续筛选,如果我要找到uname中a头的所有信息。
for(int i=0i<list.size()i++){
User user = (User)list.get(i)
if(user.getUname.trim().startWith("a")){
System.out.println(user.getUname)//获得筛选信息
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)