Portál AbcLinuxu, 21. července 2025 22:52


Dotaz: Postgres - UPDATE id u duplicit

30.11.2012 11:40 Mim
Postgres - UPDATE id u duplicit
Přečteno: 372×
Odpovědět | Admin
Mám spoustu sousedících multiplygonů, přičemž každý má svoje body. Snažím se převést dvoj a vícebody na jeden bod sdílený sousedními multipolygony. Má-li id 50 stejné souřadnice (x, y) jako id 10 potřebuju změnit id 50 na id 10

SELECT vypadá takto
SELECT o.id_bodu, o.x, o.y FROM lokace o
 WHERE exists ( select 'x' 
                  FROM lokace i
                WHERE i.x = o.x
                   AND i.y = o.y
                   AND i.id_bodu < o.id_bodu
             );
Na UPDATE mám 5 nefunkčních variant, které sem nemá smysl dávat. Zjevně je nutný mazanější postup, na který mi chybí mazanost.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.12.2012 14:14 jos
Rozbalit Rozbalit vše Re: Postgres - UPDATE id u duplicit
Odpovědět | | Sbalit | Link | Blokovat | Admin
je to teda T-SQL, takže syntaxe tý rankovací funkce se může lišit, ale myšlenka je snad zřejmá

UPDATE l
SET l.id_bodu = b.id
FROM
  lokace l
  JOIN (
    SELECT id, x, y, ROW_NUMBER() OVER (PARTITION BY x, y ORDER BY id) AS r_no
    FROM body
  ) b ON b.x = l.x AND b.y = l.y AND b.r_no = 1

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.