2

私はテーブルを持っています:

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

TYPEcol は次のように値として定義されます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 - すべてaddress 2 - すべてPhone 3 - すべてfax

どうすればこれを達成できますか?

ご協力いただきありがとうございます :-)

4

2 に答える 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 |
+------+---------+-------+
于 2013-05-24T15:30:20.227 に答える