删除多余的信息,学生表,多条信息,除了id不一样,其余的字段值都一样。
先根据除id字段外分组得到,唯一id,再根据查询出的id结果,删除表中的其他数据
这条sql可以执行
`DELETE from student where id NOT in (SELECT a.id from (SELECT s.id from student as s GROUP BY sage,sname,ssex) a)
下面这条sql为什么不能执行 ,上面就是把分组结果再查了一次,把id查询出来了
```DELETE from student where id NOT in (SELECT s.id from student as s GROUP BY sage,sname,ssex)
我想问问各位大佬这是什么原理,为什么??求解
SELECT s.id from student as s GROUP BY sage,sname,ssex
这句有问题,包含 groupy by 的语句的 select 后面的字段只能是聚合函数或者是 group by 后的列名称,而这里你的 s.id 显然是不合语法要求的。
因为你不能直接从student表里查询出数据,然后再删除student的数据,所以中间需要再嵌套一个子查询