programing

Mysql select distinct

stoneblock 2023. 9. 21. 20:02

Mysql select distinct

mysql 테이블에서 중복되는 행을 선택하려고 하는데 문제는 쿼리의 모든 필드를 선택할 수 없다는 것입니다. 단지 내가 사용한 필드 이름을 구별되게 선택할 수 있게 해줍니다. 더 나은 이해를 위해 쿼리를 작성하겠습니다.

mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

첫번째는 잘 작동합니다.

이제 모든 필드를 선택하려고 하면 오류가 발생합니다.

저는 ticket_id 127이 행 ID 7,8,9에 3번이라고 말하면 중복되는 최신 항목을 선택하려고 합니다. 그래서 이 경우에 9개인 최신 항목으로 한 번 선택하고 이것은 ticket_id의 나머지 항목에 모두 적용됩니다.

무슨 아이디어라도

DISTINCT는 일부 열에만 적용되는 함수가 아닙니다.선택 목록의 모든 열에 적용되는 쿼리 수정자입니다.

즉, DISTINCT는 모든 열이 다른 행의 열과 동일한 경우에만 행을 줄입니다.

DISTINCT는 SELECT 직후(SQL_CALC_FOUND_ROWs와 같은 다른 쿼리 수정자와 함께) 와야 합니다.그런 다음 쿼리 수정자를 따라 열을 나열할 수 있습니다.

  • 오른쪽: SELECT DISTINCT foo, ticket_id FROM table...

    ticket_id foo 값의 각 다른 쌍에 대한 행을 출력합니다.

  • 틀렸습니다: SELECT foo, DISTINCT ticket_id FROM table...

    ticket_id의 세 개의 다른 값이 있는 경우 세 행만 반환됩니까?만약 6가지 다른 음식의 가치가 있다면 어떨까요?6가지 가능한 foo 값 중 어떤 3가지 값을 출력해야 합니까?
    글자 그대로 애매합니다.

찾습니까"SELECT * FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id?

갱신하다

SELECT t.* 
FROM 
(SELECT ticket_id, MAX(id) as id FROM temp_tickets GROUP BY ticket_id) a  
INNER JOIN temp_tickets t ON (t.id = a.id)

구별 대신 그룹별로 사용할 수 있습니다.discent를 사용하면 테이블에서 모든 값을 선택하기가 어려워지기 때문입니다.그룹 기준을 사용할 때와 달리 테이블의 모든 필드와 고유한 값을 얻을 수 있습니다.

사용가능DISTINCT이런 거죠.

mysql_query("SELECT DISTINCT(ticket_id), column1, column2, column3 
FROM temp_tickets 
ORDER BY ticket_id");

하위 선택 항목을 사용합니다.

http://forums.asp.net/t/1470093.aspx

언급URL : https://stackoverflow.com/questions/7250566/mysql-select-distinct