field

SinceVersion dev

field

description

Syntax

field(Expr e, param1, param2, param3,.....)

在order by子句中,可以使用自定义排序,可以将expr中的数据按照指定的param1,2,3顺序排列。 不在param参数中的数据不会参与排序,将会放在最前面,可以使用asc,desc控制整体顺序。 如果有NULL值,可以使用nulls first,nulls last控制null的顺序

example

  1. mysql> select k1,k7 from baseall where k1 in (1,2,3) order by field(k1,2,1,3);
  2. +------+------------+
  3. | k1 | k7 |
  4. +------+------------+
  5. | 2 | wangyu14 |
  6. | 1 | wangjing04 |
  7. | 3 | yuanyuan06 |
  8. +------+------------+
  9. mysql> select class_name from class_test order by field(class_name,'Suzi','Ben','Henry');
  10. +------------+
  11. | class_name |
  12. +------------+
  13. | Suzi |
  14. | Suzi |
  15. | Ben |
  16. | Ben |
  17. | Henry |
  18. | Henry |
  19. +------------+
  20. mysql> select class_name from class_test order by field(class_name,'Suzi','Ben','Henry') desc;
  21. +------------+
  22. | class_name |
  23. +------------+
  24. | Henry |
  25. | Henry |
  26. | Ben |
  27. | Ben |
  28. | Suzi |
  29. | Suzi |
  30. +------------+
  31. mysql> select class_name from class_test order by field(class_name,'Suzi','Ben','Henry') nulls first;
  32. +------------+
  33. | class_name |
  34. +------------+
  35. | null |
  36. | Suzi |
  37. | Suzi |
  38. | Ben |
  39. | Ben |
  40. | Henry |
  41. | Henry |
  42. +------------+

keywords

  1. field