2013-12-06 6 views
0

Я не думаю, что это должно быть все, что сложно, но у меня возникла проблема с созданием запроса, чтобы вывести более низкое значение из таблицы, идентификатор выше.Использование MySql Как найти максимальное значение строки

Так в основном, у меня есть таблица, которая содержит это (помимо всего прочего):

8A  6253.85 
8B  6184.64 

Я хочу найти 8B и получить значение 6184.64.

Я использовал следующий запрос:

SELECT * FROM payments WHERE contract = '".$contract."' AND payment LIKE '".$x."%' LIMIT 1 

где $ х 8, но, конечно же, получить 6253.85, потому что речь идет о первом.

Я пробовал:

SELECT * FROM payments WHERE contract = '".$contract."' AND payment LIKE '".$x."%' DESC LIMIT 1 

, который, по существу, то, что я хочу сделать, но это не работает (ошибка SQL).

Если кто-нибудь может дать мне краткое предложение о том, как убедиться, что я всегда вытаскиваю «последний» ряд, который соответствует, я был бы признателен.

Заранее благодарен.

+0

Таблицы SQL по своей сути неупорядочены. Не существует «первого» или «последнего» случая. У вас есть столбец, который вы можете использовать для определения порядка (например, отметка времени или автоматически увеличивающийся идентификатор)? –

+1

Итак, контракт 8A/8B? Что вы подразумеваете под более низким значением? Возможно, было бы лучше включить больше о вашей структуре SQL. – Devon

ответ

2

Просто добавьте ORDER BY payment DESC (до пункта LIMIT).

FROM ... 
WHERE ... 
    AND ... 
ORDER BY payment DESC 
LIMIT 1 

(LIKE предикат возвращает значение TRUE или FALSE (или NULL) для каждой строки, и не может быть использован для сортировки более и более низких значений, если у вас есть частный случай «известных» значения.)

+0

После того, как я прочитал больше, я предполагаю, что OP имеет структуру столбцов типа «8A NUMBER», и он хочет заказать по номеру. Я думаю, что проблема сводится к тому, как структурирована таблица. 8A и номер должны быть раздельными. – Devon

+0

@ Devon: OP говорит, что хочет найти «8B», в отличие от «8A». Учитывая предикат 'LIKE '8%'', я предполагаю, что это колонка платежей, которую он хочет сортировать. – spencer7593

+0

Да, я хотел, чтобы высший «номер платежа». Поскольку 8B выше 8A, я хотел 8B. Спасибо за этот ответ, но я не могу поверить, что все было так просто ... Я должен был подумать об этом, и мне, наверное, нужно больше поспать. :( –

Смежные вопросы