Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

ĐẶT HÀNG BẰNG số dương và số âm riêng biệt trong câu lệnh MySQL

Có thể sử dụng SIGN để sắp xếp các số dương lên đầu, sau đó lấy giá trị tuyệt đối bằng ABS để có được ASC / DESC mong muốn.

SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)

CHỈNH SỬA

Như Nahuel đã chỉ ra, phần trên sẽ sắp xếp số 0 ở giữa tích cực và tiêu cực. Thay vào đó, để nhóm chúng với các mặt tích cực, bạn có thể sử dụng CASE thay vào đó (hoặc, nếu cột của bạn chỉ là số nguyên, thì SIGN(col + 1) hơi kỳ diệu )

SELECT * FROM theTable
ORDER BY 
    CASE WHEN col >= 0 THEN 1 ELSE 2 END,
    ABS(col)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhóm carbon Laravel theo tháng

  2. Tại sao SELECT ... WHERE id =a trả về kết quả nếu giá trị là 0

  3. Cơ sở dữ liệu cột Laravel Sum Eloquent

  4. Dừng truy vấn thông qua pdo

  5. MySQL làm thế nào để làm cho giá trị hết hạn?