Betrachte folgende Tabelle:SQL UPDATE von Gruppen
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Product](
[ProductID] [int] IDENTITY(1,1) NOT NULL,
[ProductCategory] [int] NOT NULL,
[ProductCategoryGuid] [uniqueidentifier] NULL,
CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED
(
[ProductID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Product] ON
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (1, 2, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (2, 2, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (3, 2, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (4, 3, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (5, 4, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (6, 2, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (7, 3, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (8, 4, NULL)
GO
INSERT [dbo].[Product] ([ProductID], [ProductCategory], [ProductCategoryGuid]) VALUES (9, 4, NULL)
GO
SET IDENTITY_INSERT [dbo].[Product] OFF
GO
Daten sieht wie folgt aus:
ProductID ProductCategory ProductCategoryGuid
1 2 NULL
2 2 NULL
3 2 NULL
4 3 NULL
5 4 NULL
6 2 NULL
7 3 NULL
8 4 NULL
9 4 NULL
Was ich möchte, ist erreichen, aktualisieren [ProductCategoryGuid] Spalte, so dass alle Zeilen mit demselben Wert für [Product] wird den gleichen GUID-Wert in [ProductCategoryGuid] Spalte
zur Klarstellung:
GUID-Werte werden als Teil der Aktualisierung Abfrage mit NEWID() Funktion
Reihen mit ProduktID IN (1, 2, 3, 6) erzeugt wird GUID1
Reihen mit ProduktID IN hat (4, 7) haben GUID2
Reihen mit ProductID IN (5,8,9) haben GUID3
Dies wäre ein Job, den Sie in der Productcategory-Tabelle ausführen sollten. Wenn Sie keinen haben, erstellen Sie einen. – Solarflare
Es gibt keine ProductCategory-Tabelle. Ich verstehe, dass dies ein bisschen kontraintuitiv ist, aber die eigentliche Aufgabe ist komplizierter und das ist der beste Weg, es für SO zu präsentieren. Ich versuche zu klären: GUID-Werte werden als Teil der Abfrage unter Verwendung von NEWID() Funktion Reihen mit ProduktID IN (1, 2, 3, 6) erzeugt wird GUID1 Reihen mit ProduktID IN hat (4 7) wird, haben GUID2 Reihen mit ProductID IN (5,8,9) wird GUID3 –
Derivative von Bogdan Antwort haben: UPDATE p SET p.ProductCategoryGuid = pc.GD vON dbo.Product p \t INNER JOIN \t (SELECT DISTINCT p2.ProductCategory, NEWID() AS GD \t VON dbo. Produkt p2) AS pc ON p.ProductCategory = pc.ProductKategorie –