2012-04-27 3 views
0

내 게시물을 타임 스탬프로 주문하고 싶지만 그렇지 않습니다. 이유를 모르겠습니다. 쿼리를 순서없이 실행하면 작동하지만 ORDER BY를 추가하면 작동하지 않습니다.ORDER BY MySQL 및 타임 스탬프

SELECT * FROM Posts INNER JOIN Topics ON idTopic = idTopics 
INNER JOIN Users ON idUserPosts = idUsers 
WHERE idTopic = :idTopic LIMIT :limit_down, :limit_up 
ORDER BY Posts.datePosts DESC; 

가 작동하지 않는 이유 :

이 내 쿼리입니다?

+0

를 시도하지 왜 다음 날짜 필드입니다 datePosts는 어떤 데이터 유형입니까? – Daniel

+0

타임 스탬프 유형 – Guillaume

답변

2

/LIMIT에 의해 순서를 inversing 시도 어떤 기준으로 "처음"? 그런 다음 결과를 주문하십시오.

당신은 다음 무엇을하는지 당신은 당신이 정말로 원하는 경우도, 그렇게 만 생각할 수 있습니다

SELECT * FROM (
    SELECT Posts.datePosts orderField, * FROM Posts 
    INNER JOIN Topics ON idTopic = idTopics 
    INNER JOIN Users ON idUserPosts = idUsers 
    WHERE idTopic = :idTopic 
    LIMIT :limit_down, :limit_up; 
) 
ORDER BY orderField DESC 
+3

참고 : 제시된 두 번째 쿼리는 성능 측면에서 매우 좋지 않으며 ** 사용해서는 안됩니다 ** 또한 주문/제한 순서를 전환 할 필요가 없습니다. –

+2

사용해서는 안되며 거의 사용하지 않으며 의미가 없습니다. 학술적 목적을 위해서, 그리고 첫 번째 쿼리가 왜 합리적인지 이해하기 위해서입니다. – Konerak

1

이 시도 : 필요에 의해 순서가 먼저 올 수 있도록

SELECT * FROM Posts INNER JOIN Topics ON idTopic = idTopics 
INNER JOIN Users ON idUserPosts = idUsers 
WHERE idTopic = :idTopic 
ORDER BY Posts.datePosts DESC 
LIMIT :limit_down, :limit_up; 

제한은 쿼리에 적용되는 마지막이어야합니다. 당신이 테이블의 X 첫 번째 행을 얻을 싶지만 : 한계는 방법 덜 유용 다른,

SELECT * FROM Posts 
INNER JOIN Topics ON idTopic = idTopics 
INNER JOIN Users ON idUserPosts = idUsers 
WHERE idTopic = :idTopic 
ORDER BY Posts.datePosts DESC 
LIMIT :limit_down, :limit_up; 

가 필요에 의해 순서가 한계의 전으로 :

0

이 dateposts을 보인다는이

SELECT * FROM Posts INNER JOIN Topics ON idTopic = idTopics 
INNER JOIN Users ON idUserPosts = idUsers 
WHERE idTopic = :idTopic LIMIT :limit_down, :limit_up 
ORDER BY DATE(Posts.datePosts) DESC;