sql >> Databáze >  >> RDS >> Sqlserver

Získejte první záznam stejného FK v datovém rozdílu

Myšlenka je následující

  • Vyberte všechny dítě objednávky do jedné hodiny s jeho minimálním možným (rodičovským) ID. (Předpokládám zde, že nejnižší OrderID bude také nejstarší ID objednávky).
  • Spojte tyto výsledky s původní tabulkou.
  • Použijte tyto výsledky jako základ pro prohlášení o aktualizaci.

Příkaz SQL

UPDATE  Orders
SET     ParentOrderID = p.ParentOrderID
FROM    Orders o
        INNER JOIN (
          SELECT  ParentOrderID = MIN(o1.OrderID), OrderID = o2.OrderID
          FROM    Orders o1
                  LEFT OUTER JOIN Orders o2 ON 
                    o2.CustomerID = o1.CustomerID
                    AND o2.OrderDate > o1.OrderDate
                    AND DATEADD(hh, -1, o2.OrderDate) < o1.OrderDate
          GROUP BY o2.OrderID
        ) p ON p.OrderID = o.OrderID


  1. Jak používat více databází pomocí php?

  2. MySQL:Vícenásobné vložení pro jeden sloupec

  3. mysql vrátí řádky odpovídající rok měsíc

  4. Příkaz MySQL Vysvětlete ignorovat LIMIT?