1

次のクエリを使用する場合:

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列は、ASCではなくDESCによってソートされているように見えます。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       |                |
+------------------+--------------+------+-----+---------+----------------+
4

1 に答える 1

3

このidフィールドは[一意の自動インクリメンタル]主キーです。これは、値product_idis_validhasに関係なく、順序によってid他の2つの順序付けルールが使用できなくなることを意味します。

私が思うに、ORDER BY句がネストされた順序として機能し、列の値の独立した順序として機能しないことをおそらく理解していないと思います。

于 2012-09-20T16:34:25.580 に答える