Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL]Update wiersza z duplikatem
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
T00kie
Witam, mam sobie tabelkę i w tej tabelce zupełnie świadomie czają się duplikaty, oto zapytanie, które wypluwa mi te duplikaty:

  1. SELECT Twr_Ean, count(*) AS cnt
  2. FROM Cdn.TwrKarty
  3. GROUP BY Twr_Ean
  4. HAVING count(*) > 1 AND Twr_EAN NOT LIKE ''

Potrzebuję dla tych rekordów zmienić w kolumnie Twr_Esklep znacznik z 0 na 1. Zapytanie:

  1. UPDATE Cdn.TwrKarty SET Twr_Esklepy = 1 WHERE Twr_EAN IN (SELECT Twr_Ean, count(*) AS cnt
  2. FROM Cdn.TwrKarty
  3. GROUP BY Twr_Ean
  4. HAVING count(*) > 1 AND Twr_EAN NOT LIKE '')

nie chce przejść ponieważ, jak mnie informuje, nie można zmienić więcej niż jednego rekordu jeśli nie ma użytej funkcji EXISTS, natomiast:

  1. UPDATE Cdn.TwrKarty SET Twr_Esklepy = 1 WHERE EXISTS (SELECT Twr_Ean, count(*) AS cnt
  2. FROM Cdn.TwrKarty
  3. GROUP BY Twr_Ean
  4. HAVING count(*) > 1 AND Twr_EAN NOT LIKE '')

znakuje mi wszystkie towary w tej tabeli..

Co muszę zrobić, żeby zaznaczyło mi tylko te zduplikowane rekordy?
john_doe
  1. UPDATE Cdn.TwrKarty SET Twr_Esklepy = 1 WHERE Twr_EAN IN (SELECT Twr_Ean, count(*) AS cnt
  2. FROM Cdn.TwrKarty
  3. GROUP BY Twr_Ean
  4. HAVING count(*) > 1 AND Twr_EAN NOT LIKE '')


to zapytanie nie działa bo w IN zwracasz więcej niż jedną kolumnę

spróbuj tak
  1. UPDATE Cdn.TwrKarty SET Twr_Esklepy = 1 WHERE Twr_EAN IN (
  2.  
  3. SELECT twr_ean FROM (
  4. SELECT Twr_Ean, count(*) AS cnt
  5. FROM Cdn.TwrKarty
  6. GROUP BY Twr_Ean
  7. HAVING count(*) > 1 AND Twr_EAN NOT LIKE ''
  8. ) AS dom
  9. )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.