[member] 테이블에서 일부 행의 email
열 값은 동일합니다 .
login_id | email
---------|---------------------
john | john123@hotmail.com
peter | peter456@gmail.com
johnny | john123@hotmail.com
...
일부 사람들은 다른 login_id를 사용했지만 동일한 전자 메일 주소를 사용했지만이 열에는 고유 제한 조건이 설정되지 않았습니다. 이제이 행을 찾아서 제거해야하는지 확인해야합니다.
이 행을 찾으려면 어떤 SQL 문을 사용해야합니까? (MySQL 5)
답변
이 쿼리는 가장 많이 사용 된 주소를 사용하여 전자 메일 주소 목록과 사용 횟수를 제공합니다.
SELECT email,
count(*) AS c
FROM TABLE
GROUP BY email
HAVING c > 1
ORDER BY c DESC
전체 행을 원할 경우 :
select * from table where email in (
select email from table
group by email having count(*) > 1
)
답변
select email from mytable group by email having count(*) >1
답변
다음은 email
하나 이상에 사용되는를 찾는 쿼리입니다 login_id
.
SELECT email
FROM table
GROUP BY email
HAVING count(*) > 1
login_id
by의 목록을 얻으려면 두 번째 (중첩 된) 쿼리가 필요 합니다 email
.
답변
수락 된 답변의 첫 부분은 MSSQL에서 작동하지 않습니다.
이것은 나를 위해 일했다 :
select email, COUNT(*) as C from table
group by email having COUNT(*) >1 order by C desc
답변
이메일 열에 빈 값이 포함 된 경우이를 사용하십시오.
select * from table where email in (
select email from table group by email having count(*) > 1 and email != ''
)
답변
나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 이것은 같은 문제가있는 다른 누군가를위한 것입니다. 그리고 이것이 원하는 것에 더 정확하다고 생각합니다.
SELECT * FROM member WHERE email = (Select email From member Where login_id = john123@hotmail.com)
john123@hotmail.com이있는 모든 레코드를 login_id 값으로 리턴합니다.
답변
고마워 사람들 🙂 나는 그 두 열에 대해서만 관심이 있었고 나머지는별로 신경 쓰지 않았기 때문에 아래를 사용했습니다. 잘 했어
select email, login_id from table
group by email, login_id
having COUNT(email) > 1