Programing

MySQL의 열에서 동일한 값을 가진 행 찾기

lottogame 2020. 5. 16. 10:04
반응형

MySQL의 열에서 동일한 값을 가진 행 찾기


[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_idby의 목록을 얻으려면 두 번째 (중첩 된) 쿼리가 필요 합니다 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

내부 선택 쿼리가있는 조건을 사용하여 원하는대로 전체 레코드를 가져옵니다.

SELECT *
FROM   member
WHERE  email IN (SELECT email
                 FROM   member
                 WHERE  login_id = abcd.user@hotmail.com) 

참고 URL : https://stackoverflow.com/questions/1786533/find-rows-that-have-the-same-value-on-a-column-in-mysql

반응형