从MySQL获取类似的查询

时间:2013-01-25 07:35:30

标签: mysql sql

如何进行查询以仅获取具有相同screen_nameskip = 0值的记录?

---------------------------
| id | screen_name | skip |
---------------------------
| 1  | mary        | 0    |
| 2  | john        | 0    |
| 3  | tom         | 1    |
| 4  | mary        | 0    |
| 5  | ben         | 1    |
| 6  | john        | 1    |
---------------------------

2 个答案:

答案 0 :(得分:2)

SELECT  screen_Name
FROM    tableName
WHERE   skip = 0
GROUP   BY screen_name
HAVING  COUNT(*) > 1

<强>更新

如果您想要获取所有记录而不仅仅是screen_name,请使用JOIN代替IN

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  screen_Name
            FROm    tableName
            WHERE   skip = 0
            GROUP   BY screen_name
            HAVING  COUNT(*) > 1
        ) b ON a.screen_name = b.screen_name

为了提高性能,请在列INDEX上添加screen_name以提高性能。

ALTER TABLE tableName ADD INDEX index_name (screen_Name)

答案 1 :(得分:0)

您可以尝试使用:

select id,screen_name,skip
  from TABLE
 where skip=0
   and screen_name in (select t2.screen_name
                         from TABLE t2
                     group by t2.screen_name
                    having count(*)>1 
                      )

这将为您提供skip = 0和重复的screen_name

的所有记录