Có một trường 'noticeBy' enum ('email', 'di động', 'tất cả', 'tự động', 'không có gì') NOT NULL DEFAULT 'auto'. Vì nó được biết đến theo thứ tự của trường ENUM thực hiện liên quan đến chỉ mục của nó. Tuy nhiên, làm thế nào nó có thể làm cho trật tự bằng các giá trị của nó?ORDER BY "ENUM field" trong MYSQL
Trả lời
Như ghi nhận dưới Sorting:
ENUM
giá trị được sắp xếp dựa trên số chỉ mục của chúng, tùy thuộc vào thứ tự các thành viên liệt kê được liệt kê trong đặc tả cột. Ví dụ:'b'
sắp xếp trước'a'
choENUM('b', 'a')
. Chuỗi trống sắp xếp trước các chuỗi không phải rỗng và các giá trịNULL
sắp xếp trước tất cả các giá trị đếm khác.Để ngăn chặn kết quả bất ngờ khi sử dụng mệnh đề
ORDER BY
trên một cộtENUM
, sử dụng một trong những kỹ thuật này:
Xác định danh sách
ENUM
theo thứ tự alphabetic.Đảm bảo rằng cột được sắp xếp theo từ điển thay vì theo số chỉ mục bằng mã hóa
ORDER BY CAST(col AS CHAR)
hoặcORDER BY CONCAT(col)
.
mỗi viên đạn thứ hai, bạn có thể do sắp xếp trên cột sau khi nó đã được cast thành một chuỗi:
ORDER BY CAST(noticeBy AS CHAR)
Bạn có thể xác định đặt hàng của bạn tuy nhiên bạn muốn:
ORDER BY CASE noticeBy
WHEN 'email' THEN 1
WHEN 'mobile' THEN 2
WHEN 'all' THEN 3
WHEN 'auto' THEN 4
ELSE 5
END
này sẽ trả lại hàng theo thứ tự sau: email, điện thoại di động, tất cả, tự động, không có gì.
này cũng hoạt động:
ORDER BY FIELD(noticeBy, 'all','auto','email','mobile','nothing')
(Tôi không tin rằng có một thiết lập để đạt được điều này, bạn phải cung cấp các loại-giá trị.)
Cách sắp xếp ENUM này có thể rất hữu ích trong một số trường hợp! Nó thực sự hoạt động, tôi đã thử nó :) –
hoàn hảo chính xác những gì tôi đang tìm kiếm – Andrew
- 1. SQLAlchemy ORDER BY FIELD()
- 2. Đặt hàng bởi FIELD trong MYSQL
- 3. Chọn từ bảng mysql WHERE field = '$ array'?
- 4. MySQL ORDER BY COUNT()?
- 5. ORDER BY và = (bằng) trong MYSQL
- 6. MySQL chọn GROUP BY để
- 7. Mysql UNION and GROUP BY
- 8. MySQL GROUP BY UNIX TIMESTAMP
- 9. Java enum để mysql enum trong tuyên bố chuẩn bị
- 10. MySQL Left tham gia ĐÂU table2.field = "X"
- 11. Liệu một enum trong MySQL cần phải được NOT NULL?
- 12. Tạo loại biến ENUM trong MySQL
- 13. MySQL COUNT(), SUM() và GROUP BY
- 14. MYSQL LEFT JOIN với GROUP BY
- 15. MySql: ORDER BY cha mẹ và con
- 16. Hibernate, MySQL, Enum và NULL
- 17. MySQL GROUP BY "và bộ lọc"
- 18. MySQL - COUNT Conditional với GROUP BY
- 19. PostgreSQL GROUP BY khác với MySQL?
- 20. Làm thế nào để cân nặng 'ORDER BY' trong mysql?
- 21. MySQL - Lựa chọn một cột không trong Nhóm By
- 22. SELECT UNION và ORDER BY trong mysql .. làm thế nào?
- 23. Khi nào nên sử dụng $ HTTP_POST_VARS ['field'] và $ _POST ['field']?
- 24. oracle datetime field indexing
- 25. Lợi thế hiệu suất của MySQL Enum?
- 26. MySQL chọn dựa trên giá trị ENUM
- 27. ISSUE: Mysql chuyển đổi Enum thành Int
- 28. Tiếp cận Multiselect Form Field trong Flask
- 29. Enum datatype so với bảng dữ liệu trong MySQL?
- 30. Text Field sử dụng Hibernate Chú
Cái này sẽ làm việc trong SQLite quá. – nuqqsa