2010-08-19 1 views
0

У меня есть две таблицыКак удалить записи из таблицы на основе условий из объединенного набора?

Table : 1, Name : NdcAwp, Columns-Ndc, AwpUnitCost 
Table : 2, Name : InvalidNdcs, Column-Ndc 

Теперь я хочу, чтобы удалить эти записи из таблицы: 1 которого AwpUnitCost является < = 0, AwpUnitCost IS NULL и не имеет ту же NDC из таблицы: 2.

+0

Думаю, вы, возможно, потребуется уточнить немного. Вы присоединяетесь к таблицам по имени? –

+0

У вас будет больше шансов получить ответ, если вы отредактируете его, чтобы иметь более описательное название. –

ответ

1

Я считаю, что это то, что вы хотите:

DELETE FROM NdcAwp 
WHERE (AwpUnitCost <= 0 
OR AwpUnitCost IS NULL) 
AND Ndc NOT IN 
(
SELECT Ndc 
FROM InvalidNdcs 
) 
+0

Большое спасибо за вашу помощь. очень ценю. – User7354632781

1

Это может сделать то, что вы просите. Оператор удаляет из вашей первой таблицы, где AwpUnitCost меньше или равно 0. COALESCE изменяет нулевые значения на 0, поэтому строки с нулевым AwpUnitCost будут включены в удаление.

Предложение NOT IN включает строки в NdcAwp, которые не находятся в InvalidNdcs, на основе значения Ndc.

DELETE 
FROM NdcAwp 
WHERE COALESCE(AwpUnitCost, 0) <= 0 
    AND Ndc NOT IN (SELECT Ndc FROM InvalidNdcs) 
+0

Большое спасибо за вашу помощь. очень ценю. – User7354632781

Смежные вопросы