오름차순으로 마지막 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 |