Мне нужно удалить значения в таблице temp на основе обоих значений в другом. Другими словами, я не хочу item_desc осталось в B для идентификатора, который имеет style_cd указанный в А.Удалить из одной таблицы на основе двух столбцов в другой
#tempA
style_cd char(3),
id_cd varchar(15)
Некоторые выборочные значения, как:
A, 123456
A, 654321
B, 321456
A, 654123
C, 424242
.
#tempB
item_desc varchar(50),
item_num char(4),
style_cd char(3),
id_cd varchar(15)
Примерные значения для этой таблицы:
item 1, 7, A, 123456
item 2, 14, B, 123456
item 2, 14, A, 123456
item 3, 23, A, 123456
....snip....
item 2, 14, B, 654321
item 2, 14, A, 654321
item 6, 44, A, 654321
Например - для идентификатора 123456 Я хочу, чтобы удалить обе записи для элемента 2 из B. Каждый элемент может иметь несколько стилей, связанных с ним. У идентификатора обычно будет только один стиль, связанный с ним, но, возможно, у него есть несколько.
Я должен работать в блоке, потому что это не кажется сложным. Я работаю над этим в течение двух дней и не могу получить ничего, кроме всех удаленных строк. Я пытался что-то вдоль линий:
DELETE #tempB
WHERE style_cd IN
(SELECT style_cd
FROM #tempB b JOIN tempA a
ON b.id_cd = a.id_cd
AND b.style_cd = a.style_cd)
Конечно, это удаляет все строки, и я не могу за жизнь мне понять, как просто избавиться от только строк, связанных со значениями style_cd перечисленных для идентификатора в таблице А. Надеюсь, это имеет смысл, и кто-то может избавить меня от моих страданий !!!!
Я использую Sybase ASE 15.0.2
ADD ... я использовал @ Джонсе предложение в качестве отправной точки. Когда я проверяю выбор, он выбирает строки, которые мне нужны для этого.
SELECT a.style_cd
FROM #tempB b
JOIN #tempA a
ON a.id_cd = b.id_cd
AND a.style_cd = b.style_cd
Когда я добавляю в любом Удалить статье он стирает все
DELETE FROM #tempB
WHERE style_cd IN
(SELECT style_cd
FROM #tempB b JOIN tempA a
ON b.id_cd = a.id_cd
AND b.style_cd = a.style_cd)
Как-то я не получаю только те строки из списка в поле выбора удалены из tempB
Я добавил, что FROM и получил те же результаты. – djailer
Sybase должен иметь другой синтаксис. https://gist.github.com/3428603 - это мой тестовый файл, который я сделал в SQLite –
Это странно. Я вставил это, отформатировал его для Sybase, и это сработало. Я остался с одной строкой для каждого типа B. Я вырезал и вставлял в свой фактический код и менял имена таблиц/столбцов.На этот раз он оставил меня с несколькими рядами, но не так, как я ожидал. Теперь все они имеют тот же стиль_cd, и мне нужно выяснить, что я получил по сравнению с исходным списком. Я мог бы быть ближе! – djailer