MYSQL系列 -查

之前的个人整理、记录
1:查询表中,name字段是j开头,k结尾,总计3个字符长度的数据

SELECT * FROM testtt WHERE `name` LIKE 'j_k'

2:查询表中以j开头的

SELECT * FROM testtt WHERE `name` LIKE 'j%'

3:查询表中以k结尾的

SELECT * FROM testtt WHERE `name` LIKE '%k'

4:查询表中以j开头,k结尾,长度不限的数据

SELECT * FROM testtt WHERE `name` LIKE 'j%k'

5:将查询出来的数据插入目标数据表中

INSERT  INTO  person_copy SELECT * FROM person

6:从两个表查询数据

SELECT pes.age,tes.`name` FROM person AS pes,testtt AS tes

7:若该数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作,否则插入一条新的记录。

INSERT INTO person(id,name,age) VALUES (3,'qwer',99) on DUPLICATE KEY UPDATE age=199

8:如果 EXISTS 后面语句为真,就执行前面的语句。

SELECT * from person WHERE EXISTS (SELECT * from person WHERE age>155)

9:修改一个表中查询出来的数据(即查询的同时修改查询的数据,会报错(1093)),需要先将查询出来的数据放到临时表t。

UPDATE person SET age=999 WHERE ID in (SELECT t.ID FROM (SELECT * FROM person)t) 

10:主键ID自增长删除后,无法从头开始问题。(当表在不断的更新时,删除了先前的数,表ID无法置0,或者连续开始)

表中原先存在4条数据,将id为1和4的数据删除
在这里插入图片描述
插入一条id自增长数据

INSERT INTO person VALUES (NULL,'qwe',465)

在这里插入图片描述
数据过多时,如何处理?

先将表复制,将复制的表使用 truncate 清空。然后,将原本数据转移置copy表。
这里插入图片描述
清空copy表

TRUNCATE person_copy

转移数据

INSERT INTO person_copy (SELECT NOT IFNULL(id,NULL),`name`,age FROM  person  ORDER BY id ASC)
或者
INSERT INTO person_copy (SELECT NULL,`name`,age FROM  person  ORDER BY id ASC)

在这里插入图片描述
最后自己再改下表名就可以了

11.表中有条重复记录,如何删除多余的重复记录
在这里插入图片描述
查询name不带重复的

SELECT DISTINCT(`name`) FROM person_copy

删除全部重复记录

Delete  FROM person_copy Where `name` In (Select F.name FROM(SELECT `name` FROM person_copy)F Group By F.name Having Count(*)>1)  

删除多余重复,只留下一条。例如:多余的重复的,留下age最大的。

Delete From person_copy Where age Not In (Select Max(T.age) From (SELECT * from person_copy)T Group By T.name)

就是这么强大,烦恼!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yangzm996

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值