URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7390
[ Назад ]

Исходное сообщение
"Удаление с исключением"

Отправлено psychos , 31-Окт-11 14:53 
приветствую всех !
давно уже не кодил... тут столкнулся с такой проблемой :
есть 3 таблицы вида:
`alpha`
id|text
01|a
02|b
05|c
09|d
50|s

`betta`
id
01
02
03
04
05
06
07
08
09
10
11
12
13
50
52
54
55

`gamma`
id
52
55

нужно удалить "лишние строки" из `betta`, id которых нет в `alpha` и `gamma`.
можно было бы использовать not exist, но проблемма в том что во всех 3х таблицах строк, не менее 500-600к

понимаю что это "элементарщина", но голова забита совершенно =)


Содержание

Сообщения в этом обсуждении
"Удаление с исключением"
Отправлено ACCA , 31-Окт-11 18:40 
delete from betta left join alpha using(id) left join gamma using (id) where alpha.id is null and gamma.id is null;


"Удаление с исключением"
Отправлено rusadmin , 01-Ноя-11 06:43 
> delete from betta left join alpha using(id) left join gamma using (id)
> where alpha.id is null and gamma.id is null;

не вижу ключей-ссылок (вторичных ключей). Какая запись к какой относиться - как узнать? =)


"Удаление с исключением"
Отправлено DeadLoco , 01-Ноя-11 13:38 
> не вижу ключей-ссылок (вторичных ключей). Какая запись к какой относиться - как
> узнать? =)

Проще всего - через учебник по SQL.



"Удаление с исключением"
Отправлено ACCA , 01-Ноя-11 18:16 
[]

"Удаление с исключением"
Отправлено psychos , 02-Ноя-11 14:35 
> delete from betta left join alpha using(id) left join gamma using (id)
> where alpha.id is null and gamma.id is null;

благодарю =)
delete b from `betta` b
  left join alpha using(id)
    left join gamma using (id)
where alpha.id is null and gamma.id is null;