2012-03-05 3 views
0

Я хочу сортировать mysql по последним данным, но я должен прибегать к нему каждый раз, когда я вхожу в систему, как мне сортировать и сохранять последние логины?как отсортировать mysql

+1

Зачем вам нужно физически прибегать к столу? Достаточно ли «SELECT blah FROM table ORDER BY name»? – Ryan

+0

@Melissa Потому что я хочу отсортировать его последним зарегистрированным ... – Lukus

+0

Мне нужно понять, в чем проблема, чтобы помочь вам. вы можете выбрать их отсортированные? ... –

ответ

0

Вы не можете надежно хранить значения, хранящиеся в MySQL, в алфавитном порядке. Лучшее, что вы можете сделать, это использовать предложение ORDER BY в запросе SELECT.

0

Обычно вы сортируете вещи, когда вы выбираете, добавляя предложение «ORDER BY». Почему вас волнует, какой порядок они фактически хранятся в таблице?

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

0

SQL не работает таким образом. Это не похоже на таблицу, где строки должны быть прочитаны как «есть», и вы можете разместить их в определенном значимом порядке. Ничто из когда-либо не меняет порядок, в котором SQL хранит строки. SQL дает вам данные через запросы, а запрос сообщает, какие строки вы хотите видеть, в каком порядке.

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

0

Чтобы получить последний Войти из таблицы пользователя, можно использовать запрос как

SELECT user_name, login_datetime 
FROM user_table 
ORDER BY login_datetime DESC 
LIMIT 1 

user_name Если предположить, что это поле вы ищете и login_datetime отметка времени вы можете заказать на. LIMIT 1 покажет только самый верхний результат и может быть изменен в зависимости от ваших потребностей.

0

С движком MySQL InnoDB ваши строки физически упорядочены в соответствии с первичным ключом. Итак, если первичный ключ находится в столбце login, то строки останутся в физическом порядке по значениям в login.

Требование первичного ключа состоит в том, что каждое значение должно быть уникальным и NULL не допускается. Таким образом, вы можете сделать свой столбец login основным. Если login были столбцом datetime, то последнее значение даты и времени входа всегда будет в конце таблицы.

Многие люди делают блок с автоматическим приращением целым числом своим первичным ключом. В этом случае последняя запись, которая будет вставлена, всегда будет в конце таблицы.

При определенных обстоятельствах вы должны знать значение наличия ваших строк в физическом порядке (по определенному столбцу), иначе вы не спросите.

Например, выполнив следующие SELECT возвращает строки в физическом порядке (такие же, как первичный ключ) без того, чтобы указать столбец заказать результаты по, а не заставляя MySQL позже заказать результирующий набор:

SELECT * 
FROM test 

Однако, если вам нужно заказать результаты, отличные от первичного ключа, тогда вы должны использовать пункт ORDER BY.Например, если строки были физически упорядочены по колонке name, но вы хотите, результаты возвращаются в порядке login, вы бы выполнить следующий запрос:

SELECT * 
FROM test 
ORDER BY login ASC 

Этот запрос просит MySQL заказать строки в соответствии с указанный столбец. Вы указываете ASC в предложении ORDER BY, чтобы заказать значения в порядке возрастания и DESC, чтобы заказать их в порядке убывания.

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