MySQL按顺序排列

时间:2013-05-28 08:46:37

标签: mysql

SELECT
  DISTINCT(p_title), title
FROM
 `reg`
WHERE
 ( C_title REGEXP '[ENGINE]' or C_title REGEXP '[ENGINEER]')
 AND title IN ('Prof. Dr.','Dr.','Mr.')

    ORDER BY FIELD (title,'Prof. Dr.','Dr.')

我想在我的查询中仅列出Prof. Dr.和Dr.字段。但是,先是教授和第二博士......但是,这些代码不起作用。

                    WHEN title = 'Prof. Dr.' THEN 1
                WHEN title = 'Assoc. Prof. Dr.' THEN 2
                WHEN title = 'Assist. Prof. Dr.' THEN 3
                WHEN title = 'Dr.' THEN 4
                WHEN title != 'Ms.' THEN 5
                WHEN title != 'Mr.' THEN 6
                ELSE 7

你能告诉我其他方法吗?

1 个答案:

答案 0 :(得分:0)

使用包含所有可能值的enumerated字段,以获得更好的索引效果,更小的数据量和更少的错误(例如,某人在“Mr.”之后错过了点,

您正在寻找的是if-statements堆叠:

SELECT title, IF('title' = 'Mr.', 1,
    IF (title = 'Mrs.', 2, 
        IF (title = 'Dr.', 3, 0)
    )
) 
AS title_number 
FROM users...

将返回

title | title_number
--------------------
"Mr." | 1
"xxx" | 0

...