MySQL 排序依据 - IN

标签 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

你能告诉我其他方法吗?

最佳答案

使用 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/

相关文章:

c# - 带有 NHibernate Criteria 的 HAVING 子句中的多个条件?

python - 想要为两个文件添加时间戳

php - PHP 中的 MySQL 查询不再有效

php - 从mysql中随机选择记录

php - 在 MYSQL 存储查询中使用 PHP 变量

mysql - Solr 应该用作只读数据库吗?

php - 数据库插入错误

mysql - 执行 LIKE 时忽略记录

php - 如何从 MySql 数据库中检索图像?

php - MYSQL:为什么这个更新查询不起作用?