2012-01-17 60 views
5

Tôi chỉ muốn chọn 3 nhận xét mới nhất trên một bài đăng và yêu cầu họ đặt hàng theo thứ tự ASC.MYSQL chọn 3 hàng cuối cùng, theo thứ tự ASC

này chọn 3 hàng cuối cùng, tuy nhiên tôi cần chúng theo thứ tự ngược lại:

mysql_query(" 
SELECT * FROM comments WHERE postID='$id' AND state='0' ORDER BY id DESC LIMIT 3") 

Trả lời

14

Bạn có thể đảo ngược sắp xếp nó sau này.

SELECT * 
FROM (SELECT * FROM comments 
     WHERE postID='$id' 
     AND state='0' 
     ORDER BY id DESC 
     LIMIT 3) t 
ORDER BY id ASC; 
+0

Lời cảm ơn hoàn hảo. –

+1

Chúng tôi không khuyến khích bạn sử dụng *, nó nhanh hơn để đề cập đến tất cả các mục – Porizm

2

này cũng có thể được thực hiện chỉ trong PHP, mà không sửa đổi các truy vấn SQL, bằng cách đơn giản lặp lại ngược qua tập kết quả:

$res = mysql_query(...); 
for($i=mysql_num_rows($res)-1; $i>=0; $i--) { 
    //do whatever 
} 

Tôi thú nhận tôi không biết những gì là sự khác biệt hiệu suất là (nếu có), nhưng nó chỉ là một tùy chọn khác có thể giúp bạn.

+0

Tôi thích phương pháp này, tôi nghĩ rằng nó tách ý tưởng lựa chọn ba mới nhất và xuất ra cũ nhất đầu tiên tốt hơn (trong tâm trí của tôi ít nhất: p) –

+1

để làm nhiều công việc trên máy chủ như bạn có thể (trong cơ sở dữ liệu), và không có kết thúc người dùng phải làm điều này (với php), nhưng tôi cảm ơn bạn đã trả lời của bạn. –

+0

Tôi nghĩ rằng nó thực sự đi xuống đến một vấn đề ưu tiên. Tôi thường thích làm nhiều hơn trong SQL càng tốt, nhưng đôi khi nó có thể gây nhầm lẫn mã, trong khi PHP dễ đọc hơn và dễ hiểu hơn, IMHO, vì vậy đôi khi lặp lại chỉ làm cho nó rõ ràng hơn những gì đang thực sự xảy ra trong mã . – cegfault

-1
$result = mysqli_query($con,"SELECT * FROM (SELECT * FROM messeges WHERE username='{$_SESSION['username']}' ORDER BY id DESC LIMIT 3) t ORDER BY id ASC"); 
+1

Các câu trả lời chỉ có mã làm rất ít để giáo dục độc giả SO. Vui lòng chỉnh sửa câu trả lời của bạn để bao gồm một số giải thích. Câu trả lời của bạn nằm trong hàng kiểm duyệt bởi vì nó đã được gắn cờ là có chất lượng thấp. (... và vui lòng định dạng mã của bạn) – mickmackusa

Các vấn đề liên quan