2014-09-19 4 views
-1

У меня есть таблица, в которой хранятся идентификатор, цена и доступность продукта. Я хочу сначала перечислить продукты по самой низкой цене, но эти продукты должны быть доступны. Продукты, которые имеют более низкую цену, но недоступны, должны быть перечислены в отсортированном порядке ниже продуктов, которые могут иметь более высокую цену, но доступны.sql order by by two columns

предположить, что это данные в таблице

id | price | availability 
8247|16690.0|true 
8247|16500.0|true 
8247|16000.0|false 
8247|15999.0|false 

Я хочу, чтобы запрос, который возвращает мне данные в этой форме

id | price | availability 
8247|16500.0|true 
8247|16690.0|true 
8247|15999.0|false 
8247|16000.0|false 

Как это может быть сделано?

Схема таблицы

sqlite> .schema pricecomparison 
CREATE TABLE `pricecomparison` (`availability` VARCHAR , `id` VARCHAR , `price` VARCHAR); 
+0

Покажите нам SQL, с которым вы пытались. – 2014-09-19 08:23:53

+0

Возможный дубликат http://stackoverflow.com/questions/10615284/order-by-multiple-columns – Tushar

ответ

6

Может быть что-то вроде этого:

ORDER BY availability DESC, price 

Дополнительная информация:

+0

sqlite> выберите идентификатор, цену, доступность от pricecomparison где id = 8247 заказ по наличию, цене; 8247 | 15999,0 | ложные 8247 | 16000,0 | ложные 8247 | 16500,0 | правда 8247 | 16690,0 | правда –

+0

не пришли прямо: \ –

+0

Какой тип 'availability'? Если это 'text', вам нужно отсортировать' DESC', потому что 'true' появляется после' false'. – 2014-09-19 08:31:58

1
SELECT * FROM pricecomparison ORDER BY availability DESC,price 

Я добавляю DESC, чтобы предоставить true.

+0

Пожалуйста, добавьте объяснение, почему вы думаете, что это решает проблему. В противном случае он не имеет контекста и, вероятно, будет удален из-за «низкого качества». – lxg