0

screen_name同じ値とskip=0の値を持つレコードのみを取得するクエリを作成する方法は?

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

2 に答える 2

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

アップデート

だけでなくすべてのレコードを取得する場合は、代わりにscreen_name使用しますJOININ

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パフォーマンスを高速化するには、 on 列を追加してscreen_nameパフォーマンスを高速化します。

ALTER TABLE tableName ADD INDEX index_name (screen_Name)
于 2013-01-25T07:37:15.240 に答える
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 が繰り返されるすべてのレコードが得られます。

于 2013-01-25T07:39:57.853 に答える