delete语句
在网上搜索了一个mysql数据库删除重复数据的sql,原文是这样的:
DELETE
FROM
people
WHERE
peopleName IN (
SELECT
peopleName
FROM
people
GROUP BY
peopleName
HAVING
count(peopleName) > 1
)
AND peopleId NOT IN (
SELECT
min(peopleId)
FROM
people
GROUP BY
peopleName
HAVING
count(peopleName) > 1
)
运行之后报错,起初以为是没给出别名的问题,给别别名之后依然报错,于是将这个sql拆开,只写基本的删除语句:
DELETE FROM people p WHERE p.username = 'sheamus'
执行之后依然不可以,经研究后得知,DELETE语句中使用别名需要在DELETE与FROM中间写上别名
DELETE p FROM people p WHERE p.username = 'sheamus'
这样运行后就可以了。将这个原因放入最初的sql中,发现还是不行,加上别名之后的sql还是报错,仔细在网上找了关于MySQL语句应注意的地方,终于找到原因,原来在DELETE语句中有WHERE语句中不能出现出现同一张表,people这张表出现在WHERE语句中所有这个语句报错,正确的语句应该是:
DELETE
FROM
`user`
WHERE
username IN (
SELECT
username
FROM (
SELECT * FROM `user`
) AS t
GROUP BY
username
HAVING
count(username) > 1
)
AND uid NOT IN (
SELECT
min(uid)
FROM(
SELECT * FROM `user`
) AS t
GROUP BY
username
HAVING
count(username) > 1
)
MySQL删除重复数据的sql经测试可用。
相关阅读
第一范式第一范式(1NF)要求数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。若某一列有多个值,可以将该列单独拆分
.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易
但是我发现每次重启mysql服务,这些设置就恢复成默认的设置latin1 解决方法很简单:在mysql的配置文件my.ini写下character-set-
1130 - Host XXX is not allowed to connect to this
1.在用Navicat配置远程连接Mysql数据库时遇到如下报错信息,这是由于Mysql配置了不支持远程连接引起的。 2.在安装Mysql数据库的主
mysql提供了分页的函数limit m,n 其中m代表起始行,n代表总行数.我们还可以根据实际情况来改写我们的分页语句.如果只给定一个参数