비슷한 유형의 질문을 보았지만 아무도 내 상황을 도왔습니다.ID와 최신 날짜순으로 MySQL 그룹
나는 테이블이
테스트는 다음 스키마가 테스트 (사용하여 MySQL의의 MyISAM)을 말할 수있다 : 지금 테스트 페이지는 현재 로그인 한 사용자가 방문 할 때마다
TID INT PRIMARY KEY AUTO_INCREMENT
TData varchar (data that i want to select)
TUserID INT (this will be joined with users table, same users can have many records here)
TViewedAt DATETIME (records each time user visits page, datetime format)
를,이 기록을 추가 이 테이블에는 방문한 사용자 ID, 사용자가 방문한 일부 데이터 및 날짜 및 시간이 매번 자동으로 증가되는 TID로 기록됩니다.
그런 다음 백엔드 관리 페이지에서 어떤 사용자가 테스트 페이지를 방문했는지, 얼마나 많은 시간, 데이터 및 시간을 볼 수 있는지 확인하십시오. 기본적으로 20-25 개의 최신 행 목록이있는 테이블입니다. 내 쿼리는 데이터 당 하나의 레코드 만 선택해야합니다. 데이터는 사용자가 동일 할 수 있지만 다른 시간에 있지만 가장 최근의 각 사용자에 대해 하나의 데이터 만 선택하려고합니다. 따라서 사용자가 테스트 페이지를 10 번 방문하면 10 개의 레코드가 데이터베이스로 이동하지만 테이블에는 최신 레코드가 1 개만 표시됩니다. 다른 사용자가 15 번 페이지를 방문하면이 두 번째 사용자에 대한 1 개의 레코드가 표시됩니다.이 두 번째 사용자는 가장 최근의 레코드이므로 총 2 개의 행이 테이블에 표시됩니다. 어떤 이유로 든 GROUP BY를 사용할 수 있지만 MAX (날짜)는 각 날짜의 최신 datetime을 제공하지 않습니다. 이는 중
SELECT *
FROM Test
WHERE TUserID = 123
GROUP BY TData
ORDER BY TViewedAt
수익률이 행을 해당 행의 어느 것도 최신 없습니다 :
여기 내 쿼리입니다.
덕분에 많이
네, 그 일이 매우 대단히 간단하고 쉽게 대단히 감사합니다 – Giorgi
환영합니다, 기꺼이 도와 드리겠습니다 –
거기에 어떤 방법이 있습니다 그게 더 효율적입니다, 즉, 하위 쿼리가 필요하지 않습니다? 내 서버를 죽이고 있다는 것을 발견했습니다 – Jason