Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить записи 
:(
    Опции темы
HappyLife
Дата 15.7.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



Здравствуйте. Помогите составить запрос на удаление всех записей где статус только 7.
Есть некая таблица примерно такая

----------------------------
user_id | user_status
----------------------------
1           |  0
----------------------------
1           |  7
----------------------------
2           |  7
----------------------------
2           |  7
----------------------------
3           |  0

Требуется, удалить только человека с user_status равным везде 7, а человека у которого есть хотя бы один user_status "не 7" полностью оставить.

Запросом выбрать нужные для удаление записи я могу так
Код

SELECT *
FROM table
WHERE `user_uid` NOT
IN (

SELECT `user_uid`
FROM table
WHERE `user_status` !=7
)

но выполнить
Код

DELETE
FROM table
WHERE `user_uid` NOT
IN (

SELECT `user_uid`
FROM table
WHERE `user_status` !=7
)


у меня не выходит.

Заранее спасибо.
PM MAIL   Вверх
vladimir74
Дата 15.7.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



ээ это же одна таблица, зачем встроеный запрос? или я что то не увидел?

все понял!! не правильно прочитал задачу!!!

Это сообщение отредактировал(а) vladimir74 - 15.7.2009, 13:26
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
HappyLife
Дата 15.7.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



vladimir74, Так удалятся все записи где user_status = 7, а мне нужно чтобы в тех зап. где user_id одинаковый и хотя бы в одной строке нет user_status = 7, то те строки должны остаться. Соответсвенно после удаления должна быть таблица

----------------------------
user_id | user_status
----------------------------
1           |  0
----------------------------
1           |  7
----------------------------
3           |  0

вот.
PM MAIL   Вверх
vladimir74
Дата 15.7.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(HappyLife @  15.7.2009,  11:27 Найти цитируемый пост)
vladimir74, Так удалятся все записи где user_status = 7,

да я понял, страно, у меня все получается, может гда то синтаксическая ошибка? что пишет хоть?
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
HappyLife
Дата 15.7.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



MySQL 
Код

DELETE
FROM table
WHERE `user_uid` NOT
IN (
SELECT `user_uid`
FROM table
WHERE `user_status` !=7
)



Цитата

You can't specify target table 'adpo_headbase' for update in FROM clause 


Ругается, что две одинаковых таблицы.

Это сообщение отредактировал(а) HappyLife - 15.7.2009, 14:07
PM MAIL   Вверх
Zloxa
Дата 15.7.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Код

DELETE
FROM table
where `user_status` =7


?

Добавлено через 2 минуты и 42 секунды
Цитата(HappyLife @  15.7.2009,  13:06 Найти цитируемый пост)
а человека у которого есть хотя бы один user_status "не 7" полностью оставить.

сорри не дочитал
Код

delete from table t1 where not exists (select null from table t2 where t1.user_id = t2.user_id and t2.user_id != 7)



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
HappyLife
Дата 16.7.2009, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



А допустим что есть еще одно поле count, как бы произвести пересчет чтобы на выходе получить

--------------------------------------
user_id | user_status | count
--------------------------------------
1           |  0                 | 2
--------------------------------------
1           |  7                 | 2
--------------------------------------
3           |  0                 | 1
--------------------------------------

То есть кол-во записей для каждого user_id




PM MAIL   Вверх
Zloxa
Дата 16.7.2009, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Модератор: Пожалуйста, один топик - один вопрос.
Код

update table t1 set count = (select count(*) from table t2 where t1.user_id = t2.user_id)



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.