php - MySQL ORDER BY 'ENUM' 类型值

标签 php mysql sql-order-by

我有一张 table :

ID    TYPE     VALUE
1     phone    12345
2     fax      98753
3     address  etc
...

TYPE col 定义为 ENUM,其值为:'phone','fax','address'

现在我的查询是:

$q = mysql_query(SELECT * FROM tbl ORDER BY id);
while(row = mysql_fetch_array($q)){
    echo $row['type'] . "--->" . $row['value'];
}

输出按id排序,第一行是phone,然后是fax,然后是address

但我希望输出按以下顺序排序:

1- 所有地址 2- 所有 电话 3- 所有 传真

我怎样才能做到这一点?

感谢您的帮助:-)

最佳答案

试试这个查询-

SELECT * FROM tbl
ORDER BY
  CASE type
    WHEN 'address' THEN 1
    WHEN 'phone' THEN 2
    WHEN 'fax' THEN 3
    ELSE 4
  END

完整示例:

CREATE TABLE tbl (
  id int(11) DEFAULT NULL,
  type enum ('phone', 'fax', 'address') DEFAULT NULL,
  value int(11) DEFAULT NULL
);

INSERT INTO test.tbl(id, type, value) VALUES
  (1, 'phone', 11),
  (2, 'fax', 22),
  (3, 'address', 33),
  (4, 'fax', 44),
  (5, 'address', 55);

SELECT * FROM tbl
ORDER BY
  CASE type
    WHEN 'address' THEN 1
    WHEN 'phone' THEN 2
    WHEN 'fax' THEN 3
    ELSE 4
  END;

+------+---------+-------+
| id   | type    | value |
+------+---------+-------+
|    3 | address |    33 |
|    5 | address |    55 |
|    1 | phone   |    11 |
|    2 | fax     |    22 |
|    4 | fax     |    44 |
+------+---------+-------+

关于php - MySQL ORDER BY 'ENUM' 类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738456/

相关文章:

php - 结合静态盐和随机盐

php - 从 PHP 获取数据到 iOS 应用程序的最佳方式是什么?

javascript - 使用Mysql创建数据库的正确方法

sql - 为什么 SQL 对子句顺序严格?

Mysql 查询 rand() 并排序

linux - XDebug 已安装但未显示在 phpinfo() 中

php - 在应该抛出 403 时抛出 404 响应

MySQL 连接 : strings not returning

mysql - Joomla:如何检测我们表中的列是否存在,如果不存在则将其添加到表中

sql - 根据列 id(顺序)将所选数据合并到同一行