使用以下查询时:
SELECT id, rater_id, product_id, is_valid
FROM `ratings`
WHERE (`ratings`.element_id = 3151)
ORDER BY id DESC, product_id DESC, is_valid ASC;
我希望结果集首先按id排序,然后按product_id排序,再按is_valid排序。 实际发生的是结果集确实是有序的,但结果中的is_valid列似乎是由DESC排序,而不是由ASC排序。尝试使用ASC和DESC,但结果集保持不变。
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | MUL | NULL | |
| product_id | int(11) | YES | MUL | NULL | |
| value | tinyint(4) | YES | MUL | NULL | |
| rater_id | int(11) | YES | | NULL | |
| comment | varchar(350) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| element_id | int(11) | YES | MUL | NULL | |
| is_valid | tinyint(1) | YES | MUL | 0 | |
+------------------+--------------+------+-----+---------+----------------+
答案 0 :(得分:3)
id
字段是[唯一自动增量]主键。这意味着,无论product_id
和is_valid
的值如何,id
的顺序都会使其他两个排序规则无效。
我认为您可能不理解ORDER BY
子句是嵌套排序,而不是列值的独立排序。