Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Всем привет. Пожалуйста помогите составить запрос, а то я в конец запутался.
Есть таблица где есть повторы.
+----+-------+--------+-------+
| id | name | number | price |
+----+-------+--------+-------+
| 11 | Вещь | 111 | 10000 |
+----+-------+--------+-------+
| 11 | Вещь | 1 | 20000 |
+----+-------+--------+-------+
| 12 | Товар | 100 | 20 |
+----+-------+--------+-------+
| 13 | Штука| 90 | 45 |
+----+-------+--------+-------+
| .... |
+----+-------+--------+-------+
Как выбрать все строки с максимальной ценой, т.е. значением price?
Отредактированно hyena (21.07.2011 00:13:32)
Неактивен
Неактивен
evgeny написал:
select id,max(price) from mytable group by id;
Это да, но я имел виду всю строчку. Т.е. если мы выполним такой запрос то просто получим id, и максимальное значение цены.
+----+-------+
| id | price |
+----+-------+
| 11 | 20000 |
+----+-------+
| 12 | 20 |
+----+-------+
| 13 | 45 |
+----+-------+
Это было бы идеально если бы не было меняющегося столбика с количеством.
Т.е.
Неактивен
Самое простое решение, что придумал, это сделать так:
Неактивен
Создайте составной ключик на поля id, price.
Неактивен
Да, сначала
deadka написал:
Создайте составной ключик на поля id, price.
alter table `mytable` add index id_price(id,price);
А потом
Отредактированно evgeny (22.07.2011 20:45:49)
Неактивен
Мужики я вас люблю!
Спасибо.
Действительно, такой запрос выполняется в десятки раз быстрее.
Знал что надо примерно такие запросы да еще с join, но составить пока еще с трудом получается.
Буду дальше изучать запросы...
И надеюсь дальше, сделаю из такой таблицы
+----+-------+--------+-------+
| id | name | number | price |
+----+-------+--------+-------+
| 11 | Вещь | 111 | 10000 |
+----+-------+--------+-------+
| 11 | Вещь | 1 | 20000 |
+----+-------+--------+-------+
такой вывод:
+----+-------+--------+-------+
| 11 | Вещь | 112 | 20000 |
+----+-------+--------+-------+
самостоятельно
Отредактированно hyena (23.07.2011 02:31:42)
Неактивен
Страниц: 1