如何进行查询以仅获取具有相同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 |
---------------------------
答案 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
的所有记录