|
|
|
| потерялся чтото..
как выбрать 30 последних записей например, одним запросом? | |
|
|
|
|
|
|
|
для: sl1p
(01.09.2008 в 23:24)
| |
SELECT * FROM `tbl` ORDER BY `time` DESC LIMIT 30
|
| |
|
|
|
|
|
|
|
для: а-я
(01.09.2008 в 23:58)
| | эх пасибки) | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 02:38)
| | хотя извиняюсь, не добавил в вопросе то что нужно вывести это именно ASC..
тоесть тут может надо посчитать както сколько вообще записей или х3=\
и ещё было бы круто узнать как удалять первые записи если их больше 30..
должны оставаться только последние 30. | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 07:15)
| | >хотя извиняюсь, не добавил в вопросе то что нужно вывести это именно ASC..
SELECT * FROM
(SELECT * FROM `tbl` ORDER BY `time` DESC LIMIT 30) as table
ORDER BY table.time ASC
>и ещё было бы круто узнать как удалять первые записи если их больше 30..
>должны оставаться только последние 30.
тут я думаю нужна проверка не на уровне бд а выше (php) | |
|
|
|
|
|
|
|
для: ronin80
(02.09.2008 в 08:46)
| | о, это то что надо:)
>тут я думаю нужна проверка не на уровне бд а выше (php)
да ну, вроде не такой уж и сложный запрос имхо....О_о
чтото на вроде удалить там всё что ниже чегото.. немогу придумать никак) был бы айди по порядку без "пробелов" можно было бы удалить всё что меньше макс(айди)-30..
а так х3) | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 09:17)
| | ну если там есть ключевое поле (например key) то тогда можно так
DELETE FROM `tbl`
WHERE key not in
(SELECT key FROM `tbl` ORDER BY `time` DESC LIMIT 30) | |
|
|
|
|
|
|
|
для: ronin80
(02.09.2008 в 09:21)
| | рыдательная ошибка какаято О_о...
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
MySQL client version: 5.0.22
это типа адски старое или как?=\
качал вроде самую новую версию easyPHP... | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 09:44)
| | блин, у меня 5.1.11 тоже не хочет ( | |
|
|
|
|
|
|
|
для: ronin80
(02.09.2008 в 09:48)
| | шо это за бред такой О_о...
может оно шутит) | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 09:49)
| | мне интересно как она палит эту ошибку если версия старая а разработчики ещё не знали что они туда добавлять будут) а если знали то почему не добавили))
щас попробую новую поставить, посмотрим)
был бы рад ещё узнать что тут качать
xD
http://dev.mysql.com/downloads/mysql/5.1.html
зы. и что значит alpha версия? ато испугала маленько 6.0.6-alpha | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 09:52)
| | в общем можно ещё такой вариант попробовать (я конечно не силён в php)
необходимо сначала подсчитать количество строк в таблице:
SELECT count(*) FROM tbl
передать это значение в переменную, а затем выполнить удаление таким образом:
DELETE FROM tbl
ORDER BY time ASC
LIMIT (вот_здесь_значение_переменной-количество_строк_которое_необходимо_оставить);
причём запрос нужно сформировать программно, чтобы на сервере посылалася запрос с подставленным значением переменной
пытался подставить вместо числа в LIMIT переменную, не хочет, так что надо формировать запрос программно | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 09:52)
| | 5.1 не рекомендую скачивать, сам намучался с ним, пришлось откатывать до 5.0, так что 5.0 (последнюю версию) можешь качать смело | |
|
|
|
|
|
|
|
для: ronin80
(02.09.2008 в 09:59)
| | так 5.0 и стоит )
хм.. а чё за траблы?..
вдруг потребуется потом чтонить "новое" забадяжить так сказать)
ну щас попробую 6.0.6 поставить)) | |
|
|
|
|
|
|
|
для: sl1p
(02.09.2008 в 10:02)
| | >ну щас попробую 6.0.6 поставить))
ну если у тебя не рабочая база а тестовая/учебная то можешь конечно, но если рабочая то флаг тебе в руки :)
главное не забудь:
Note: It is good practice to back up your data before installing any new version of software. Although MySQL has done its best to ensure a high level of quality, you should protect your data by making a backup. | |
|
|
|
|
|
|
|
для: ronin80
(02.09.2008 в 10:08)
| | угу я так подумал что пока не надо, потом закончу попробую уже норм запросы..
а пока воспользовался по твоему примеру выше:
$limitcount = mysql_result(mysql_query("SELECT COUNT(*) FROM chat"),0) - _CHAT_ROWS;
if($limitcount < 0)$limitcount = 0;
mysql_query("DELETE FROM chat ORDER BY id ASC LIMIT $limitcount");
вот так всё ок, спасибо ещё раз :) | |
|
|
|