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
你能告诉我其他方法吗?
最佳答案
使用 enumerated包含所有可能值的字段,以获得更好的索引性能、更小的数据量和更少的错误(例如有人漏掉了“Mr.”后面的点,
您正在寻找的是堆叠的 if 语句:
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
...
关于MySQL 排序依据 - IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16787690/