从结果集中读取每一行并设置值

时间:2014-10-09 00:32:00

标签: mysql sql

我有表(T1),其中userid(int),user_name(char)和contact(char)作为列。 我需要遍历表,找出表中多次出现的user_name和计数。如果出现次数超过三次,我将使用count来删除user_name。 我尝试使用

select user_name,count(user_name) from T1 group by user_name having count(*)>3

The output is
user_name                     EXPR_1
chris                          4
Fred                           5

现在,如果我需要使用EXPR_1中的值。如何在不创建新的/ temp表的情况下迭代此结果集。

由于

1 个答案:

答案 0 :(得分:0)

将您的查询用作子选择:

DELETE FROM T1 WHERE user_name IN (
    SELECT user_name
    FROM T1
    GROUP BY user_name
    HAVING COUNT(user_name) > 3
)

对评论的回应:

好吧,现在我对你要求的东西感到困惑。如果你想做的就是按最高计数排序,那么就这样做:

SELECT
    user_name,
    COUNT(user_name) AS numOccurrences
FROM T1
GROUP BY user_name
HAVING COUNT(user_name) > 3
ORDER BY numOccurrences DESC

现在,当您遍历它们时,它将按出现次数排序,从最高到最低。

您是否在询问如何迭代结果?如果是这样,那完全取决于您执行此查询所使用的工具以及您如何将其发送到其他应用程序。请详细说明。