SELECT formid, avals(data) as datavalues, akeys(data) as datakeys, taskid
FROM task_form_data
WHERE taskid IN (449750,449699,449620)
ORDER BY formid, timestamp DESC
테스트 쿼리가 될 수 있습니까?중복되지 않고 행을 SELECT하는 행을 선택하십시오.
그래서 내가 그것을 선택하면 오래된 데이터도 얻을 수 있습니다. DISTINCT ON (formid)을 사용할 수 없습니다. 필자는 최신 결과 (종종 diff formid로 3 ~ 4 행)가 필요합니다. - 각각의 taskid IN (PHP에서 유래 - 다수 일 수 있음 - 각각에 대해 별도의 질의를 할 수 없음)에 대해. 그런 식으로 작동시킬 수있는 방법이 있습니까?
데이터 예 (그냥 빨리 예 - 큰 날짜 값은 가장 오래된 타임 스탬프를 것) :
formid timestamp taskid
6 1 449750
2 2 449750
2 3 449750
4 4 449750
4 5 449750
무엇 나올한다 (다양한 formid-의 수는 더 크거나 작을 수) :
6 1 449750
2 2 449750
4 4 449750
업데이트 : - 작동하는 것 같다 -
SELECT DISTINCT ON(formid) formid, avals(data) as datavalues, akeys(data) as datakeys, taskid, timestamp
FROM task_form_data
WHERE taskid IN (450567,449699,449620)
GROUP BY formid,taskid,data,timestamp
ORDER BY formid,timestamp DESC
나는 것을 시도했지만 첫 번째 paramet와 어딘가에서 taskid IN. 배열의 각 값에 대해 작동하도록 수정 될 수 있습니까?
마지막으로 쿼리를 실행 한 시간을 기록한 다음'where ... and timestamp> $ time_of_last_query'를 사용합니까? –
늦게 회신 - 조금만 인터넷에 접속할 수 없었습니다. 문제는 다양한 persoons (고유 ID)에 대한 데이터가 있다는 것입니다. 즉, formid를 재사용 할 수 있지만 데이터가 다릅니다. –
이 테이블에 하나의 식별 컬럼 또는 작성 날짜 컬럼을 작성할 수 없습니까? 최신 컬럼 식별을위한 컬럼이 있어야하기 때.입니다. Row_number() 이상 (NewIdentityColumn desc에 의해 formid, taskid 순서로 파티션) – KumarHarsh