2016-01-11 24 views
5
$qry="select * from table where category='car' or title='car' or description='car'"; 

nhưng tôi muốn đầu ra liệt kê các hàng theo danh mục trước rồi đến tiêu đề và sau đó mô tả.mysql: sắp xếp kết quả theo tên cột

**** Edit: thực sự tôi đang sử dụng một nhà điều hành như để tìm kiếm **

Ví dụ:

id category title description 
    1 car 
    2 car 
    3   car 
    4   car 
    5   car 
    6     car 

là có cách nào khác hơn là sử dụng công đoàn?
Cảm ơn bạn trước.

+1

Bạn đang tìm kiếm ORDER BY? Xin lỗi nhưng không rõ ràng .. – Kamal

+0

Tôi nghĩ rằng thứ tự sẽ không hoạt động. nếu bạn nghĩ rằng nó sẽ giúp trả lời câu hỏi của tôi pllease đăng nó –

+0

bạn có thể làm theo các câu trả lời Gordon ... nó tốt hơn so với chúng tôi. – devpro

Trả lời

9

Bạn có thể thực hiện việc này bằng cách sử dụng ORDER BY bằng các phím bên phải. Trong MySQL, bạn có thể làm:

ORDER BY (category = 'car') DESC, 
     (title = 'car') DESC, 
     (description = 'car') DESC 

MySQL xử lý biểu thức boolean làm số nguyên trong ngữ cảnh số, với 0 cho sai và 1 cho đúng. Vì vậy, DESC đặt các phiên bản thực sự đầu tiên.

Bạn cũng có thể đơn giản hóa các khoản WHERE nếu bạn thích:

WHERE 'car' IN (category, title, description) 
+0

tôi xin lỗi bạn tôi, nhưng h đã thắng cuộc đua này ... kiếm được người ủng hộ phiếu bầu của tôi ... – devpro

0

Bạn có thể có nhiều ORDER BY điều khoản trong truy vấn của bạn.

select *from table where category='car' or title='car' or description='car' ORDER BY category DESC, title DESC, description DESC 

Xem câu trả lời này để tham khảo. mysql query order by multiple items

+0

Phải theo thứ tự giảm dần. –

+0

Cũng cần một khoảng trắng sau '*' – RiggsFolly

+0

Có thể không, nhưng chắc chắn đọc tốt hơn với một – RiggsFolly

1

Bạn có thể sử dụng ORDER BY cho nhiều cột như:

SELECT * FROM tablename ORDER BY category DESC, title DESC, description DESC 

Tôi đã thử nó và nó worked.

enter image description here

+0

Bạn đã quên mất "Tôi nên nghĩ đến điều đó." –

+0

cảm ơn bạn đã giúp đỡ bạn –

2

Bạn có thể nhận được kết quả này bằng cách sử dụng câu lệnh:

SELECT * FROM mytable 
WHERE (category='car' OR title='car' OR description='car') 
ORDER BY category = 'car' DESC, 
title = 'car' DESC, 
description = 'car' DESC 

Làm thế nào nó hoạt động?

Nó sẽ đặt các đơn đặt hàng dữ liệu theo số DESC theo sequentially như được đề cập trong truy vấn. Bạn có thể thay đổi trình tự như bạn muốn.

+0

cảm ơn bạn đã giúp đỡ bạn –

1
Try this , 

SELECT * FROM table where 'car' IN (category, title, description) ORDER BY category DESC, title DESC, description DESC 
0

Hãy thử truy vấn này:

select * from table 
where category='car' or title='car' or description='car' 
order by 1 desc, 2 desc, 3 desc 
Các vấn đề liên quan