爲了我有如下表在MySQL的維護「IN」查詢
DROP TABLE IF EXISTS `test`.`foo`;
CREATE TABLE `test`.`foo` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
然後我嘗試基於主鍵
SELECT * FROM foo f where f.id IN (2, 3, 1);
然後我得到以下結果
得到記錄+----+--------+
| id | name |
+----+--------+
| 1 | first |
| 2 | second |
| 3 | third |
+----+--------+
3 rows in set (0.00 sec)
可以看到,結果是按id排序的。我試圖實現的是按照我在查詢中提供的順序獲取結果。鑑於這個例子,它應該返回
+----+--------+
| id | name |
+----+--------+
| 2 | second |
| 3 | third |
| 1 | first |
+----+--------+
3 rows in set (0.00 sec)
在MySQL網站上查看此答案:http://forums.mysql.com/read.php?97,210905,210918#msg-210918 - 我想你會遇到麻煩,期待在()表現得像這樣。除非明確告訴它,否則MySQL不會對結果進行排序,而且數據中沒有任何內容會按照您的要求進行排序。 – artlung 2009-10-27 15:54:48