2012-04-23 6 views
0

Вот мой столSQL/ColdFusion удалить повторяющиеся строки

 
Display   UPC 
0    0553406259120 
0    0753406259120 
1    0753406259120 
1    0453406259120 

Если вы заметили, строка 2 и 3 имеют один и тот же СКП. Я хотел бы удалить все строки, которые имеют display = 0 и дублировать upc. Поэтому в моей таблице я хочу удалить только строку 2. Вот мой код coldfusion, который пока не работает. Пожалуйста посоветуй.

<cfquery name="GetData" datasource="#Application.ds#" dbtype="ODBC" username="#Application.UserName#" password="#Application.Password#"> 
DELETE UPC 
FROM products 
WHERE DISPLAY = 0 
GROUP BY UPC 
HAVING COUNT(*)>1 
</cfquery> 
+0

Какая версия базы данных и базы данных? – EBarr

+0

Итак, вы хотите удалить строку, где 'Display = '0'', и UPC дублируется через значения' Display'? – climbage

+0

Также может быть несколько значений UPC, где 'Display = 1'? – Leigh

ответ

3

Предполагая, что вы хотите удалить все строки, в которых UPC одно и то же, но Display отличается:

DELETE FROM Products as a 
WHERE display = 0 
AND EXISTS (SELECT '1' 
      FROM Products as b 
      WHERE b.display <> 0 
      AND b.upc = a.upc) 

Это должно работать на всех РСУБД, и удалит все строки, где UPC то же самое , но с другими Display кодами.

+0

Любопытно, это работает в mySQL? Кажется, я помню некоторые версии, не поддерживающие псевдонимы с помощью DELETE. – Leigh

+0

Вы можете удалить и/или обновить, используя псевдоним для таблицы в MSSQL. –

+0

@Mark - * Edit * Да, но я имел в виду mySQL :) Я мог ошибаться. Я не использую mySQL почти столько же, сколько MS SQL. * Edit *: dmitrymar не упоминал свой тип db. Но из его истории вопроса я предполагаю, что это может быть mySQL. – Leigh

0
DELETE FROM Products 
WHERE DISPLAY = 0 
AND UPC in (SELECT UPC 
      FROM Products 
      GROUP BY UPC 
      HAVING COUNT(UPC)>1) 
+0

Хотя это должно удалить все, где имеется более одного экземпляра «UPC», OP имеет конкретные дополнительные критерии, когда эти строки могут быть удалены. Не могли бы вы добавить отсутствующий пункт 'WHERE', пожалуйста? –

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