我有一张 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/