Бортовой журнал Ктулху

Выборка максимального значения из таблицы MySQL

Как выбрать максимальное значение из таблицы БД MySQL?

В зависимости от структуры таблицы будут разные способы решения проблемы.

Самый простой пример - таблица, содержащая один столбец и числа по возрастанию или убыванию (или в беспорядке - это не важно).

 

 

Например один столбец, два способа.

+---------+
| article | 
+---------+
| 0001 | 
| 0001 | 
| 0002 | 
| 0003 | 
| 0003 | 
| 0003 | 
| 0004 | 
+---------+

Способ первый простой и тупой.

SELECT article FROM table ORDER BY article DESC LIMIT 1

Здесь просто ограничен вывод одной строкой. В зависимости от направления сортировки (ASC или DESC) будет первая или последняя строка.

 

Способ второй.

SELECT article FROM table WHERE article IN (SELECT MAX(article) FROM table )

Здесь уже используется подзапрос в условии.

 

Второй способ эффективен при выборке одновременно из нескольких столбцов.

Например, нужно выбрать максимальный номер записи по определенному товару в интернет-магазине.

+---------+---------+

|    id    |  tovar |

+---------+---------+

 | 0001 |  1245  |

 | 0002 |  7854  |

 | 0003 |  6589  |

 | 0004 |  4852  |

 | 0005 |  7854  |

 | 0003 |  6589  |

+---------+---------+
Номера товаров сделаны с повтором.

Если в условии указать номер товара (например 7854), то на выходе будет строка 0005.

SELECT * FROM table WHERE id IN (SELECT MAX(id) FROM table WHERE tovar=7854 )

 

Это был пример выборки максимального значения из столбца таблицы.