2012-01-19 30 views
5

Có có một select * from myTable truy vấn đơn giản, và một cột gọi là Fruitssql trật tự theo giá trị cụ thể trong cột và hơn thứ tự chữ cái phần còn lại của cùng một cột

Fruits có các dữ liệu sau:

Apple 
Pear 
Peach 
Plum 
Grape 

tôi luôn luôn muốn nho đầu tiên và sau đó phần còn lại của họ theo thứ tự để kết quả sẽ là

Grape 
Apple 
Peach 
Pear 
Plum 

Như luôn luôn cảm ơn sự giúp đỡ!

Trả lời

7

tôi sẽ cố gắng một cái gì đó như thế này:

DECLARE @myTable TABLE([Fruits] VARCHAR(20)) 
INSERT INTO @myTable VALUES('Apple') 
INSERT INTO @myTable VALUES('Pear') 
INSERT INTO @myTable VALUES('Peach') 
INSERT INTO @myTable VALUES('Plum') 
INSERT INTO @myTable VALUES('Grape') 

SELECT * 
FROM @myTable 
ORDER BY 
    CASE WHEN([Fruits] = 'Grape') THEN 0 ELSE 1 END, 
    [Fruits] 

Trong ORDER BY, bạn đang gán một giá trị khi lĩnh vực [Fruits]Grape vì vậy bạn có thể sắp xếp vào đó đầu tiên, và sau đó bạn làm một loại thứ cấp trên Trường [Fruits].

+0

cột được gọi là Trái cây. –

+0

Giải pháp này có lợi thế là không yêu cầu thay đổi lược đồ, nhưng có hiệu suất lớn hơn vì bạn phải làm nhiều việc hơn để sắp xếp chúng. – cdeszaq

+1

@aF Cảm ơn, đã cập nhật câu trả lời của tôi. – rsbarro

2

Thêm cột thứ tự vào bảng Trái cây của bạn và đặt Nho là thứ tự thấp nhất (1) và phần còn lại của quả có giá trị khác (2 sẽ hoạt động tốt).

Sau đó, bạn có thể đặt hàng theo thứ tự và sau đó là tên trái cây. Điều đó sẽ đặt nho ở đầu, và sau đó phần còn lại dưới đây theo thứ tự Alpha.

3
select * from myTable 
order by 
    case when Fruits = 'Grape' then 0 else 1 end, 
    Fruits 
Các vấn đề liên quan