MYSQL删除count(*)= 1的所有结果 [英] MYSQL delete all results having count(*)=1

查看:296
本文介绍了MYSQL删除count(*)= 1的所有结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于sesskey(varchar32,index)和products(int11)两个字段的表,现在我必须删除具有sesskey count(*)= 1的所有行。
我正在尝试

例子:

 从...中删除(sesskey)(sesskey从sesskey中选择计数(*)= 1)的位置(

sesskey字段不能作为主键,因为它的重复。

解决方案

  DELETE si 
FROM t_session si
JOIN(
SELECT sesskey
FROM t_session so
GROUP BY
sesskey
HAVING COUNT(*)= 1
)q
ON q.sesskey = si.sesskey

您需要在此加入。使用相关子查询将无法正常工作。



请参阅我的博客中的以下文章以获取更多详细信息:


I have a table taged with two fields sesskey (varchar32 , index) and products (int11), now I have to delete all rows that having group by sesskey count(*) = 1. I'm trying a fews methods but all fails.

Example:

delete from taged where sesskey in (select sesskey from taged group by sesskey having count(*) = 1)

The sesskey field could not be a primary key because its repeated.

解决方案

DELETE  si
FROM    t_session si
JOIN    (
        SELECT  sesskey
        FROM    t_session so
        GROUP BY
                sesskey
        HAVING  COUNT(*) = 1
        ) q
ON      q.sesskey = si.sesskey

You need to have a join here. Using a correlated subquery won't work.

See this article in my blog for more detail:

这篇关于MYSQL删除count(*)= 1的所有结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆