programing

단일 개별 열을 기준으로 고유한 행 선택

telecom 2023. 4. 20. 20:01
반응형

단일 개별 열을 기준으로 고유한 행 선택

다음 행이 있는 행을 선택하고 싶다.distinct email다음 표의 예를 참조하십시오.

+----+---------+-------------------+-------------+
| id | title   | email             | commentname |
+----+---------+-------------------+-------------+
|  3 | test    | rob@hotmail.com   | rob         |
|  4 | i agree | rob@hotmail.com   | rob         |
|  5 | its ok  | rob@hotmail.com   | rob         |
|  6 | hey     | rob@hotmail.com   | rob         |
|  7 | nice!   | simon@hotmail.com | simon       |
|  8 | yeah    | john@hotmail.com  | john        |
+----+---------+-------------------+-------------+

바람직한 결과는 다음과 같습니다.

+----+-------+-------------------+-------------+
| id | title | email             | commentname |
+----+-------+-------------------+-------------+
|  3 | test  | rob@hotmail.com   | rob         |
|  7 | nice! | simon@hotmail.com | simon       |
|  8 | yeah  | john@hotmail.com  | john        |
+----+-------+-------------------+-------------+

내가 상관하지 않는 곳id컬럼 값이 반환됩니다.필요한 SQL은 무엇입니까?

TSQL에서의 빠른 1개

SELECT a.*
FROM emails a
INNER JOIN 
  (SELECT email,
    MIN(id) as id
  FROM emails 
  GROUP BY email 
) AS b
  ON a.email = b.email 
  AND a.id = b.id;

어떤 행이 사용되든 상관 없다는 말씀이시겠죠title,id,그리고.commentname값(모든 행에 대해 "rob"이 있지만 실제로 데이터 모델에서 적용되는지 여부를 알 수 없습니다).이 경우 창 기능을 사용하여 지정된 전자 메일 주소의 첫 번째 행을 반환할 수 있습니다.

select
    id,
    title,
    email,
    commentname

from
(
select 
    *, 
    row_number() over (partition by email order by id) as RowNbr 

from YourTable
) source

where RowNbr = 1

MySql 5.7 이상을 사용하는 경우, 이러한 링크(MySql Official, SO QA)에 따라 1개당 1개의 레코드를 선택할 수 있습니다.group by집약 기능이 필요 없습니다.

이를 통해 쿼리를 단순화할 수 있습니다.

select * from comments_table group by commentname;

여기서 실행 인 쿼리를 사용해 보십시오.

SQL 쿼리를 단순화하기 위해 각 이메일에 대해 MAX ID를 사용합니다.

;WITH ue(id)
 AS
 (
   SELECT MAX(id)
   FROM table
   GROUP BY email
 )
 SELECT * FROM table t
 INNER JOIN ue ON ue.id = t.id

이메일에서 *를 선택합니다.

언급URL : https://stackoverflow.com/questions/8273987/select-unique-rows-based-on-single-distinct-column

반응형