2010-09-05 69 views
14

Chào mừng,"Sắp xếp theo desc" theo thứ tự ngược lại?

Tôi tự hỏi là có thể đảo ngược dữ liệu được trả về trong sắp xếp "thứ tự theo desc" nhưng tôi muốn dữ liệu đó theo thứ tự ngược lại.

Ví dụ, tôi đã nhận bảng với giá trị

ID 
1 
2 
3 
4 

Và tôi làm

Sắp xếp theo ID ASC LIMIT 3 tôi đã

1 
2 
3 

Khi tôi làm Sắp xếp theo giới hạn ID DESC 3 tôi nhận được

4 
3 
2 

Tôi muốn có

3 
2 
1 

Vì vậy, tôi muốn đặt hàng bởi ASC nhưng revers kết quả. Tôi luôn làm điều này trong PHP bằng cách sử dụng array_reverse, nhưng hôm nay tôi muốn hỏi bạn. Maybye tôi sai và tôi có thể làm điều này chỉ trong Mysql. Trân

+1

bản sao có thể có của [B cách để lấy 4 hàng cuối cùng từ tập kết quả bằng cách sử dụng mysql] (http://stackoverflow.com/questions/2980220/best-way-to-fetch-last-4-rows-from-a-result-set-using -mysql) –

Trả lời

5

Bạn có thể lấy ba hàng đầu tiên sử dụng một subquery và sau đó đảo ngược thứ tự của các hàng trong một truy vấn bên ngoài:

SELECT * 
FROM 
(
    SELECT * 
    FROM yourtable 
    ORDER BY ID 
    LIMIT 3 
) T1 
ORDER BY ID DESC 
0

Bạn có thể sử dụng một bên ngoài SELECT để đảo ngược thứ tự:

SELECT * 
FROM (
    SELECT … 
    ORDER BY id ASC 
    LIMIT 3 
) sub 
ORDER BY id DESC 
25
SELECT * 
FROM (
    SELECT ... 
    FROM ... 
    ORDER BY ID ASC 
    LIMIT 3 
) AS sq 
ORDER BY ID DESC 

Hãy nghĩ về điều đó khi làm việc theo hai bước. Đầu tiên nó thực hiện truy vấn bên trong: chọn 3 bản ghi có ID thấp nhất. Sau đó, trong truy vấn bên ngoài nó sắp xếp chúng theo thứ tự giảm dần.

+0

Đó là công việc tuyệt vời. – marc

+0

Dude, bạn thật tuyệt vời! – user3284463

+0

Truy vấn này hoạt động như thế nào! Bạn có thể vui lòng giải thích hoặc cung cấp liên kết đến số này – user3284463

4

Không, bạn không sai. Không có sự khác biệt đối với bất kỳ lượng dữ liệu hợp lý nào. Array_reverse là tất cả các quyền.
Đó không phải là điều bạn phải lo lắng quá nhiều. Chỉ cần sử dụng bất cứ điều gì bạn thích hơn - để có thể đọc hoặc nguyên nhân chủ quan khác

2

Bạn có thể làm điều này với một truy vấn phụ:

SELECT * FROM 
    (SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r 
ORDER BY r.idMyTable DESC 

Resources:

+0

Trang tài nguyên không tìm thấy :( – user3284463

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