2012-03-08 1 views
0

타임 스탬프를 사용하지 않고 테이블의 중복 레코드에서 최신 ID를 가져 오려고합니다.MySQL : 테이블의 중복 레코드에서 최신 ID 가져 오기

SELECT * 
FROM `table` 
WHERE `title` = "bananas" 

-

table 
id title 
-- ----- 
1 bananas 
2 apples 
3 bananas 

이상적으로, 나는 ID 3

+1

"최신 ID"는 어떻게 정의합니까? 가장 큰 것? "중복 기록"이란 무엇을 의미합니까? –

+0

가장 큰 ID입니다 (기본 키에서 생성 된 최신 ID와 동일). 중복 기록으로 나는이 경우에 "바나나"라는 중복 제목을 의미합니다 – Aaron

답변

4

나는 약간 예에서 SELECT에 의해 혼동하고 있습니다를 잡고 싶어하지만 희망이를 조각 할 수 내보기에서. 최신 행을 반환하려면 확실히 그 행은 "최신"하게 결정하려고하는 것이 좋습니다 있지만

, 당신은 단순히 MAX() 기능

SELECT MAX(id) FROM TABLE 

를 사용할 수 있습니다. 가장 높은 열 [id]를 가진 것만으로도 길 아래에서 어떤 일이 발생하는지 생각해 볼 수 있습니다. 동일한 데이터를 사용하는 두 개의 데이터베이스를 결합하려는 경우 어떻게해야합니까? [id] 열에서 나가는 것이 최선의 결정이 아닐 수도 있습니다. 가능한 경우 [LastUpdated] 또는 [Added] datestamp 열을 디자인에 제안하십시오. 는 ID의 가정

+0

정확히 내가 무엇을 찾고 있었습니까. 감사. – Aaron

+0

이것은 질문의 "중복"부분을 다루지 않는 것 같습니다. – tribal

+0

바나나는 중복 행입니다. 테이블이 자동으로 행을 증가시키는 것으로 가정 했으므로 가장 높은 값을 가진 id가 마지막으로 입력 된 항목이어야합니다. – cgatian

0

메신저는 당신이, 당신이 얼마나 많은 행 변수에 다음 당신이 얼마나 많은 행을 저장하는 변수를 확인하기 위해 WHERE = 절을 설정했다 저장소를 셀 수

, autoincremented된다.

하지만 행을 삭제하면 ID가 감소하지 않으므로 ID를 건너 뛸 수 있기 때문에 해킹 솔루션입니다.

+0

행 수와 가장 큰 ID 수는 행이 삭제되면 잠재적으로 서로 관련이 없습니다. –

0
select max(a.id) from mydb.myTable a join mydb.myTable b on a.id <> b.id and a.title=b.title; 
관련 문제