Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2013, 13:12   #1
Bengl
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 10
Радость MySQL вывести и сразу удалить строку

Большое всем спасибо за ответы. Вопрос решен.

Последний раз редактировалось Bengl; 16.10.2013 в 15:33.
Bengl вне форума Ответить с цитированием
Старый 16.10.2013, 13:38   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Опасаюсь такого удаления. Вообще непонятен термин 'первая строка таблицы'. Нет в таблице первой и последней строки. А есть первая строка в порядке какой-то сортированности. В SELECT-е брал бы уникальный идентификатор записи и уж по нем бы удалял. А решение естественно не оптимальное. Тем более, если много именно таких запросов подряд. Попытаться удалить одним DELETE сразу группу записей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.10.2013, 14:15   #3
Bengl
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 10
По умолчанию

Цитата:
А есть первая строка в порядке какой-то сортированности
Выборка и удаления происходят в порядке очереди. Можно конечно сделать автоинкремент, и каждый раз при обращении к скрипту узнавать его наименьшее значение и уже по нему делать выборку и удалять.

Но будет ли это быстрее? И чем плох/опасен мой вариант? На сколько я понимаю, при транзакции строка блокируется и не может произойти ситуации когда строка будет удалена без вывода.

Как бы сделали вы? (в таблице нет уникальных идентификаторов, по сути вообще только 1 столбец). Спасибо.
Bengl вне форума Ответить с цитированием
Старый 16.10.2013, 15:12   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

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

Инкрементное поле никогда не поздно добавить. И всем вашим записям будет присвоен уникальный id. Потом можно будет удалять сразу множество записей одним запросом, что тоже увеличивает скорость работы и уменьшает нагрузку на MySQL сервер.

В общем, без уникальных полей, ваша база ни что иное, как простой список строк. Вам в таком случае и база не нужна. Можно просто в текстовом файле хранить ))) Там хоть порядок строк есть, гы..
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 16.10.2013, 15:17   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Выборка и удаления происходят в порядке очереди.
в вашем коде - нет, не по очереди.
Очередь предполагает некий порядок. Порядок в запросе задаётся конструкцией ORDER BY
в вашем случае никакого порядка нет.
То, что Вам кажется, что удаляется по порядку - это просто удача. Не уверен, что Вам всегда будет везти. Я бы тоже поостерёгся от такого кода.

Цитата:
Как бы сделали вы? (в таблице нет уникальных идентификаторов, по сути вообще только 1 столбец).
не знаю. Но без понимания сути решаемой Вами задачи, трудно ответить, как бы сделал я. Вы же знаете, какую задачу решаете, а мы - нет.
И почему в таблице нет ID (ну и, возможно поля, по которому можно выстроить записи в определённом, нужном Вам порядке) - непонятно!


UPDATE

когда я писал пост, не видел сообщения от grominfo.
Полностью согласен с его мнением.
я бы свой пост не писал, если бы его пост здесь уже увидел...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2013, 10:33   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ТС, зачем исходный вопрос затер? Получается три человека пустоте пытались помочь. Следующий раз можете не дождаться ответа
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить все ссылки сразу из всех документов? Karyuudo Microsoft Office Word 0 19.11.2012 14:53
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 4 05.07.2012 20:27
Не могу вывести сразу текст на экран при загрузке Ksy JavaScript, Ajax 0 14.05.2011 13:11
VBA_макрос: удалить всю строку в таблице, если в ней есть слово "удалить" макарошка Microsoft Office Excel 15 05.10.2010 09:09
Как удалить сразу несколько записей из таблицы? Vit@L БД в Delphi 5 16.02.2010 07:27