2011-05-13 4 views
2

나는 다음과 같은 테이블이로 최신 행을 선택하려면? 행 12, 13, 14가 2로 USER_ID 경우 어떻게 USER_ID

SELECT * FROM content 
WHERE user_id = 2 

그래서, 난 당신이 사용자의 테이블이있는 경우, 또한 행 14

답변

8
SELECT * FROM content 
WHERE user_id = 2 
ORDER BY id DESC 
LIMIT 1 

을 선택합니다 당신은 최신 기록을 얻으려면 각각 :

내 생각은 MySQL의에서
SELECT c.* 
FROM content c 
    INNER JOIN (SELECT user_id, max(id) as maxid 
       FROM content 
       GROUP BY user_id) as c1 on c.id = c1.maxid 
+0

이 태그는 mysql 태그이므로 'TOP'는 작동하지 않습니다. 'LIMIT'은 MySQL 키워드입니다. –

+0

을 입력하고 "LIMIT 1"을 추가하여 하나의 결과 만 반환하십시오. – zzarbi

+0

최근에 sql-server world에서 죄송합니다. –

2

이 필요 것 :

SELECT * 
FROM content 
WHERE user_id = 2 
ORDER BY id DESC 
LIMIT 1 

하위 선택을 수행하고 MAX 타임 스탬프 (더 안전 할 수 있음)를 선택할 수 있지만 타임 스탬프가없는 것처럼 보입니다.

+0

'max (timestamp)'가 더 안전한지 여부는 달려있다. 해당 타임 스탬프가'update'에서 업데이트되면 더 이상 ** 생성 ** 타임 스탬프가 아니지만 실제로 원하는 것에 따라 다릅니다. 어쨌든 subselect에 대한 진짜 필요가 없다면, 당신은 단지'timestamp desc limit by order by' – Johan

관련 문제