오름차순으로 마지막 20개 순서 선택 - PHP/MySQL
이것이 제 테이블 구조입니다.
MyTable
ID[P.K][auto increment] TopicID UID Comment
이제 토픽에 대한 마지막 20개의 코멘트를 얻고 싶습니다.ID는 오름차순으로 정렬해야 합니다!
[Facebook 기본으로 마지막 20개 댓글만 보여주는 것처럼]
최적화된 버전을 찾고 있습니다. 2/3 쿼리와 php 정렬 배열로 이 작업을 수행할 수 있지만 더 나은 대안을 찾고 있습니다.
Sample Result with data
MyTable
ID TopicID UID Comment
1 1 10 AAAA
2 1 11 BBBB
3 1 10 CCCC
4 1 10 dddd
5 1 11 EEEE
6 1 10 FFFF
TopicID에 대한 마지막 3개의 결과를 얻고 싶은데, 결과는 다음과 같습니다.
4 1 10 dddd
5 1 11 EEEE
6 1 10 FFFF
아닌
6 1 10 FFFF
5 1 11 EEEE
4 1 10 dddd
먼저 마지막 20개 항목을 선택합니다.그런 다음 오름차순으로 정렬합니다.하위 쿼리를 사용하여 단일 쿼리에서 쉽게 이 작업을 수행할 수 있습니다.
select * from (
select * from your_table order by id desc limit 20
) tmp order by tmp.id asc
SELECT *
FROM (
SELECT *
FROM mytable
WHERE topicid = $mytopicid
ORDER BY
id DESC
LIMIT 20
) q
ORDER BY
id
아니면, 더 효율적으로,
(
SELECT *
FROM mytable
WHERE topicid = $mytopicid
ORDER BY
id DESC
LIMIT 20
)
ORDER BY
id
이는 작업을 수행하기 위한 가장 짧은 표현이어야 합니다.
(select * from your_table order by id desc limit 20) order by id;
SELECT * FROM
(SELECT * FROM MyTable
ORDER BY ID DESC
LIMIT 20) ilv
ORDER BY ID;
잘 모르겠어요?
간단한 게 뭐가 문제입니까?SELECT * FROM MyTable WHERE TopicID = 1 ORDER BY ID ASC LIMIT 20
?
그런데, 최근에 입력한 것들(즉, 가장 최근에 입력한 것들)을 보여준다면, 당신은 다음과 같이DESC
(하강), 아님ASC
. 또한 ID를 사용하는 것은 매우 신뢰할 수 없기 때문에, 당신은 다음과 같은 정보를 가지고 있어야 합니다.DATETIME
주석이 입력된 시점을 저장하는 열입니다.
EDIT: 이진법LV의 답변은 하위 쿼리를 사용하여 올바르게 수행됩니다.저랑 똑같은 질문인데요DESC
'd', 그리고 ID로 정렬했습니다.
주석 날짜 열을 추가해야 하며 주석을 삽입할 때마다 사용합니다.NOW()
아니면GETDATE()
다음 선택 항목을 사용합니다.
SELECT Comment FROM MyTable WHERE TopicID=@ID ORDER BY CommentDate DESC, TopicID ASC LIMIT 20
ID를 auto_incrementation이라 가정하면 유사 날짜 필드로 사용할 수 있습니다.
SELECT * FROM MyTable
ORDER BY ID DESC
LIMIT 20
이거 드셔보세요.
SELECT * FROM(
SELECT TOP 20 * FROM TableName
ORDER BY Id DESC
)
Naushad ORDER BY Naushad.Id
언급URL : https://stackoverflow.com/questions/5912770/select-last-20-order-by-ascending-php-mysql
'programing' 카테고리의 다른 글
IIS 8에서 응용 프로그램 풀을 원격으로 중지/시작하는 방법 (0) | 2023.10.15 |
---|---|
EF가 불필요한 null-check를 사용하여 SQL 쿼리를 생성하는 이유는 무엇입니까? (0) | 2023.10.15 |
"일반 오류: 1005 테이블을 만들 수 없습니다" 라라벨 스키마 빌드 및 외부 키 사용 (0) | 2023.10.15 |
PDO를 사용하여 PHP의 결과 배열을 가져오려면 어떻게 해야 합니까? (0) | 2023.10.15 |
요소의 아래쪽 및 오른쪽 위치 가져오기 (0) | 2023.10.10 |