2012-01-13 6 views
0

유닉스 타임 스탬프로 가장 최근의 두 행을 선택해야합니다. 나는 또한 IP 주소의 발생 횟수를 계산하고 싶다. 하나의 쿼리로이 작업을 수행 할 수 있습니까?Count를 사용하고 둘 이상의 행을 반환하는 중

다음
19  12345690  127.0.0.1  2 
19  12345678  127.0.0.1  1 

내가 지금까지 가지고 있지만 그것은 단지 하나 개의 행을 반환 할 것입니다 : 여기

내 원하는 최종 결과는 같을 것이다 것입니다. 정말 테이블에 일치하는 모든 행의 수() (또는 동급)을 얻을 수있는 실제적인 방법이 없다, 그래서 내가 계산과 같은 2

SELECT 
count(timestamp) numOfOccurances, 
timestamp, 
ip, 
id 
FROM x 
WHERE ip = '127.0.0.1' 
ORDER BY 
timestamp DESC 
LIMIT 2 
+0

는'19'이 원하는 COUNT가 나는'id'입니다 그것을 가지고해야합니까? (당신은 2/1 열이 'id'이고 19 열이 그 수라고 제안한다.) –

+0

@ mathematical.coffee, 19는 개수이고 id는 맨 오른쪽 열이다. 내 응용 프로그램 코드로이 작업을 수행 할 수있었습니다. – Muzz

답변

0

집계 함수()는 LIMIT 절에 의해 영향을받는이 필요하고 LIMITed 행 수 동시에.

데이터베이스 서버가 응용 프로그램과 동일한 대륙에 있으면 두 개의 별도 쿼리를 실행하는 것이 더 빠를 것입니다.

편집 : 위의 "실용적인"은 하위 쿼리를 사용하는 옵션이 있음을 의미합니다. 정말 당신이 경우 절대적으로 ... 한 번에 위의 게시물에 따라서

SELECT 
    (SELECT count(*) FROM example WHERE ip = x1.ip) AS numOfOccurances, 
    timestamp, 
    ip, 
    id 
FROM example x1 
ORDER BY timestamp DESC 
LIMIT 2 
+0

감사합니다 SnowCrash. – Muzz

0
SELECT 
count(timestamp) numOfOccurances, 
timestamp, 
ip, 
id 
FROM x 
WHERE ip = '127.0.0.1' 
GROUP BY timestamp 
ORDER BY 
timestamp DESC 
LIMIT 2 
+0

Bryan에게 감사하지만 타임 스탬프는 모두 다르다. 다시 말해서 두 행을 다시 가져올 수는 있지만 각 numOfOccurances 열에 '1'이 표시됨을 의미한다. 각 칼럼에 총 누적 수가 필요합니다. – Muzz

관련 문제