| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Как выбрать последнее |
| Автор: Alex0202 28.5.2005, 07:51 | ||
Таблица:
Как мне выделить(отсортеравать) все начиная с последней добавленой запись ? |
| Автор: Black 28.5.2005, 09:10 | ||||
Если я правильно понял что вам надо тогда так:
|
| Автор: Irokez 28.5.2005, 11:50 | ||
тогда надо объявить ID как счетчик (auto_increment) или ввести дополнительное поле типа timestamp |
| Автор: Black 28.5.2005, 14:41 | ||
| Irokez ну я думаю Alex0202 занося ID делает ID++ Если же ID будут иметь одинаковые значения нарушится условие
|
| Автор: sergejzr 28.5.2005, 14:49 | ||
Вообще разве они не автоматом выйдут начиная с последней, если просто сделать
Насколько я знаю во многих БД это именно так. Без доп. условий записи складываются по мере их добавления и выдаются в обратном порядке. (Насчёт стандарта, не знаю... Вряд ли это так..) Добавлено @ 14:49 Это конечно если tiestamp'a нет. |
| Автор: Irokez 28.5.2005, 14:52 | ||
наоборот, начиная с первой, идут |
| Автор: sergejzr 28.5.2005, 14:57 |
| Тогда если нет timestamp, можно извратиться создав темп - таблицу и скопировав в неё данные + timestamp. И выдавать наоборот |
| Автор: Mal Hack 28.5.2005, 20:04 | ||||
Если никакая сортировка не указана, то база выдаст записи, отсортированные по времени последнего добавления, т.е. так, в каком порядке они лежат в памяти. Первый зашел, последний вышел. НО, после отсортированной выборки вполне возможно, что результат безсортированной выборки будет отсортирован так, как на данный момент в памяти данные лежат. |
| Автор: Гость_Alex0202 28.5.2005, 20:33 |
| id это имя пользователя vasya , petya ... Я знаю что можно использовать timestamp но нехотелось бы иметь лишних полей так как база будет 500,000+ записей |
| Автор: Irokez 28.5.2005, 20:49 | ||||
может все таки наоборот? первая запись будет первой и в выборке
по-моему все таки лучше ввести еще одно поле - дата регистрации, потому что насколько мне известно иначе получить искомую выборку в MySQL (MyISAM) невозможно |
| Автор: Mal Hack 28.5.2005, 20:53 | ||
Может я опять туплю... То, что последним добавил первым выйдет в выборке. В любом случае зависит от того, как в данный конкретный момент в памяти таблица лежит. |
| Автор: Guest 28.5.2005, 21:44 | ||
Млин, а первичный ключ у тебя что? Хотяб во избежание дубликации строк следует ввести автоинкрементное поле. А также если в таблице не будет целочисленного id, как же будет производиться соединение? Точнее, что потом даст EXPLAIN ? |
| Автор: Гость_Ignat 28.5.2005, 21:45 |
| Это был Ignat |
| Автор: Alex0202 28.5.2005, 22:34 |
| to Guest : oid = mt_rand(999,999999); |
| Автор: Гость_Alex0202 29.5.2005, 18:38 | ||||||
А может можно сделать например
а потом перевернуть результат
только как ?? array_reverse совсем не то .. а идеально было бы есьи можно можно так:
|
| Автор: Irokez 29.5.2005, 20:57 | ||||
|
| Автор: DENNN 30.5.2005, 08:30 | ||
Могут выдаваться, а могут и нет. В любом случае это не постоянно, т.к. противоречит принципам доступа к информации в БД. |
| Автор: Ignat 30.5.2005, 10:19 | ||
ИМХО, маразм. А почему бы "нормальный" ID не ввести в базу? |
| Автор: Bikutoru 30.5.2005, 18:17 | ||
Это не совсем верно. Точнее это верно до тех пор, пока ты не удалишь хотя бы одну запись. Данные в БД хранятся с разбиением по т.н. страницам, если ты удаляешь записи, то остальные не смещаются, а остаются на своих местах. А когда ты добавляешь запись, то она добавляется после последней записи или в какие-то свободные области имеющихся страниц. А вывод без сортировки происходит как раз по страницам, т.е. так как записи хранятся на диске... |
| Автор: Гость_Alex0202 31.5.2005, 06:27 | ||||
Ну а как подругому ? помимо таблицы `members` в которой определены oid(mt_rand()) и id(vasya) ... и другие поля, есть ещё 7 таблиц в которых я орентируюсь по oid. |
| Автор: Гость_Alex0202 31.5.2005, 06:29 | ||||
Согласен , в базе нет порядка . |
| Автор: Гость_Alex0202 31.5.2005, 06:36 | ||||||
Да.. это будет работать , но буду использовать это только в совсем крайний случай |
| Автор: lika 1.6.2005, 12:26 |
| Можно поступить очень просто: добавить поле даты создания, например createdate datetime Во время insert сажать в него sysdate() Во время выборки SELECT * FROM members ORDER BY createdate desc; Тогда будет гарантия, что первой появится именно последняя добавленная запись Лика |
| Автор: Гость_Alex0202 2.6.2005, 00:17 | ||
Возможно вы прочитали ни всё Условие было : Сделать это недобавляя полей. |