Mysql中的Delete *** 作

Mysql中的Delete *** 作,第1张

delete *** 作一般用于删除数据表中的某一行,常见的语法如下:

如果我们不在这条语句后面添加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)//获得筛选信息

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8319715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存