Shuffle Names (Update Query)

  • Hi Guys,

    I am trying to create a function to shuffle names in a Customers table. The query below seem to work fine; however, it is taking a long time for 150,000 records.

    Declare @id int

    DECLARE mycursor CURSOR FOR SELECT id FROM Customers

    OPEN mycursor

    FETCH NEXT FROM mycursor INTO @id;

    WHILE (@@FETCH_STATUS = 0)

    BEGIN

    UPDATE Customers

    SET FirstName = (SELECT TOP 1 FirstName FROM Customers ORDER BY NEWID())

    WHERE id = @id

    UPDATE Customers

    SET LastName = (SELECT TOP 1 LastName FROM Customers ORDER BY NEWID())

    WHERE id = @id

    FETCH NEXT FROM mycursor INTO @id;

    END

    CLOSE mycursor;

    DEALLOCATE mycursor;

    I saw one solution from Matt Miller

    http://www.sqlservercentral.com/Forums/Topic427826-338-2.aspx

    Need some help... How can I do that shuffle in Update Query as I cannot drop and re-create the Customers table.

    Thanks,

    Laura

  • Are you just trying to randomize the first names and the last names? Your performance is because of the cursor. You could create a temp table, then insert firstname order by newid(), then do an update from select order by newid(), Then update your original table using the newly shuffled values in your temp table. I have a meeting in about 20 minutes but I will try to roll this up. Should be pretty straight forward.

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

  • yes correct randomize the firstnames and lastnames... thanks a lot.

  • something like this should do it in a single statement;

    see if this does what you would like:

    With FNames AS (

    select distinct firstname from Customer),

    LNames AS (

    select distinct lastname from Customer),

    Randomized AS (

    SELECT

    ROW_NUMBER() OVER (ORDER BY NEWID()) AS RANDID,

    FNames.firstname,

    LNames.lastname

    FROM FNames

    CROSS JOIN LNames

    cross join sys.columns) --just to get LOTS of rows.

    UPDATE Customer

    SET firstname = Randomized.firstname,

    lastname = Randomized.lastname

    FROM Randomized

    WHERE ID = Randomized.RANDID

    Lowell


    --help us help you! If you post a question, make sure you include a CREATE TABLE... statement and INSERT INTO... statement into that table to give the volunteers here representative data. with your description of the problem, we can provide a tested, verifiable solution to your question! asking the question the right way gets you a tested answer the fastest way possible!

  • thanks Lowell.

  • Sean do I need to update using join using id? Also I found names list from census site... probably I can use that..

  • Lowell I tried the one suggested by you. It seem to take a long time for around 50K records. It ran for 15 minutes and I killed it. Do you think using temp tables and not the CTE will make the query faster?

    Thanks,

    Laura

  • This one ran much much faster... I need to testing and some addition...

    I used lastnames and firstnames I got from census site so I expect the names to be different than original.

    declare @fncount int

    declare @lncount int

    select @fncount=count(*) from dbo.CensusFirstNamesMale

    select @lncount=count(*) from dbo.CensusLastNames

    select top 150000 --get the max(ID) from the customers table and use that in dynamic query to create this table

    rid = identity(int, 1, 1),

    cast(rand(checksum(newid()))*(@fncount-1) as int)+1 as fnid,

    cast(rand(checksum(newid()))*(@lncount-1) as int)+1 as lnid

    into randomfullname

    from Master.dbo.SysColumns t1,

    Master.dbo.SysColumns t2

    create index ix_rfn1 on randomFullname(fnid,lnid)

    select datediff(ms, @g, getdate())

    Update C

    Set LastName = ln.LastName, FirstName = fn.FirstName

    from randomFullname r

    inner join CensusFirstNamesMale fn on r.fnid=fn.fnid

    inner join CensusLastNames ln on r.lnid=ln.lnid

    join Customers c on r.rid = c.id

  • OK I have a fakenames table that I keep around for various times I need this type of thing. I included the first 100 rows from that as a starting point.

    Here is that table:

    CREATE TABLE [dbo].[fakenames](

    [FakeNameID] [int] IDENTITY(1,1) NOT NULL,

    [gender] [varchar](6) NOT NULL,

    [FName] [varchar](20) NOT NULL,

    [LName] [varchar](20) NOT NULL,

    [Address] [varchar](100) NOT NULL,

    [City] [varchar](100) NOT NULL,

    [ST] [char](2) NOT NULL,

    [Zip] [varchar](5) NOT NULL

    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF

    GO

    SET IDENTITY_INSERT [dbo].[fakenames] ON

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (1, N'male', N'Francisco', N'Farley', N'3562 Bastin Drive', N'Philadelphia', N'PA', N'19103')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (2, N'female', N'Ashley', N'Depriest', N'3201 Rosebud Avenue', N'BULL SHOALS', N'AR', N'72619')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (3, N'male', N'Samuel', N'Numbers', N'3861 Collins Street', N'State College', N'PA', N'16801')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (4, N'female', N'Georgia', N'Beckley', N'2601 Hershell Hollow Road', N'EVERETT', N'WA', N'98208')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (5, N'female', N'Bernice', N'Narvaez', N'3352 Stewart Street', N'Indianapolis', N'IN', N'46204')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (6, N'male', N'Thomas', N'Rios', N'445 Horner Street', N'Boardman', N'OH', N'44512')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (7, N'female', N'Janice', N'Williams', N'3514 Gordon Street', N'Los Angeles', N'CA', N'90017')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (8, N'male', N'James', N'Terry', N'468 Lighthouse Drive', N'Monett', N'MO', N'65708')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (9, N'female', N'Martha', N'Hatcher', N'2721 Hawks Nest Lane', N'Saint Louis', N'MO', N'63108')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (10, N'male', N'Marvin', N'Lamon', N'4617 Sussex Court', N'KOSSE', N'TX', N'76653')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (11, N'female', N'Connie', N'Rowell', N'1771 Rocky Road', N'Ambler', N'PA', N'19002')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (12, N'male', N'Shane', N'Allen', N'643 Poplar Lane', N'Ft Lauderdale', N'FL', N'33311')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (13, N'female', N'Deborah', N'Mcalpine', N'3626 Daylene Drive', N'Livonia', N'MI', N'48150')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (14, N'male', N'Rodney', N'Hill', N'3621 Cunningham Court', N'Farmington Hills', N'MI', N'48335')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (15, N'male', N'Christopher', N'Smith', N'314 Saint Clair Street', N'Jackson', N'MS', N'39211')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (16, N'male', N'Rick', N'Clemmer', N'639 Camel Back Road', N'Tulsa', N'OK', N'74116')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (17, N'male', N'Lonnie', N'Timm', N'769 Grant View Drive', N'Milwaukee', N'WI', N'53218')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (18, N'male', N'Ernest', N'Mcgrail', N'3286 Parrill Court', N'Valparaiso', N'IN', N'46383')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (19, N'male', N'Michael', N'Horowitz', N'4900 Birch Street', N'El Paso', N'TX', N'79915')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (20, N'female', N'Anita', N'Melton', N'94 Andy Street', N'HUMBOLDT', N'SD', N'57035')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (21, N'male', N'Kyle', N'Turner', N'1216 Goff Avenue', N'Otsego', N'MI', N'49078')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (22, N'female', N'Brenda', N'Peabody', N'1825 Ingram Street', N'Dayton', N'OH', N'45402')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (23, N'female', N'Jane', N'Jones', N'1439 Hurry Street', N'Roanoke', N'VA', N'24011')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (24, N'male', N'Timothy', N'Makela', N'3484 Concord Street', N'CHARLOTTE', N'NC', N'28134')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (25, N'male', N'Michael', N'Diaz', N'809 Norman Street', N'Los Angeles', N'CA', N'90042')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (26, N'male', N'Enrique', N'King', N'4779 Doe Meadow Drive', N'Washington', N'MD', N'20004')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (27, N'male', N'Thurman', N'Padgett', N'1395 Neuport Lane', N'Norcross', N'GA', N'30071')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (28, N'male', N'Daniel', N'Thomas', N'2011 Golden Ridge Road', N'Troy', N'NY', N'12180')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (29, N'female', N'Edith', N'Jackson', N'503 Nancy Street', N'DURHAM', N'NC', N'27713')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (30, N'female', N'Teresa', N'Stout', N'655 Star Trek Drive', N'Tallahassee', N'FL', N'32301')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (31, N'male', N'Enrique', N'Harrington', N'2319 Fincham Road', N'Los Angeles', N'CA', N'90017')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (32, N'male', N'John', N'Daniels', N'249 Armory Road', N'MAYSVILLE', N'NC', N'28555')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (33, N'male', N'Richard', N'Jennings', N'2797 Derek Drive', N'East Liverpool', N'OH', N'43920')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (34, N'female', N'Carol', N'Caperton', N'714 Hidden Valley Road', N'Harrisburg', N'PA', N'17101')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (35, N'female', N'Marcie', N'Ohlson', N'135 Lamberts Branch Road', N'Orlando', N'FL', N'32801')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (36, N'male', N'George', N'Nebeker', N'3007 Boone Street', N'Corpus Christi', N'TX', N'78411')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (37, N'male', N'Eddie', N'Seaman', N'2408 Sunny Day Drive', N'Santa Ana', N'CA', N'92701')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (38, N'male', N'Don', N'Howard', N'45 Cherry Tree Drive', N'Jacksonville', N'FL', N'32216')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (39, N'male', N'David', N'Maltby', N'1454 Edgewood Road', N'PINE BLUFF', N'AR', N'71601')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (40, N'male', N'Billy', N'Fultz', N'2890 University Street', N'Seattle', N'WA', N'98109')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (41, N'male', N'James', N'Leger', N'313 Howard Street', N'Grand Rapids', N'MI', N'49503')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (42, N'female', N'Kimberly', N'Ringer', N'446 Hillcrest Lane', N'El Toro', N'CA', N'92630')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (43, N'female', N'Leatrice', N'Gragg', N'4051 Pine Garden Lane', N'Atlanta', N'GA', N'30339')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (44, N'male', N'Aaron', N'Weeks', N'1523 Kovar Road', N'Worcester', N'MA', N'01608')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (45, N'female', N'Vera', N'Ibrahim', N'355 Franklin Street', N'Dothan', N'AL', N'36303')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (46, N'male', N'Norman', N'Bordeaux', N'2732 Cedar Street', N'Little Rock', N'AR', N'72212')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (47, N'female', N'Ann', N'Booth', N'2175 Hurry Street', N'Harrisonburg', N'VA', N'22801')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (48, N'male', N'Gerald', N'Shank', N'459 Tetrick Road', N'ARCADIA', N'FL', N'33821')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (49, N'male', N'John', N'Thompson', N'2091 Oral Lake Road', N'Wayzata', N'MN', N'55391')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (50, N'female', N'Linda', N'Galvin', N'4365 Southern Avenue', N'Des Moines', N'IA', N'50309')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (51, N'female', N'Kathryn', N'Servantes', N'3081 Ingram Street', N'West Liberty', N'OH', N'43357')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (52, N'male', N'Ervin', N'Long', N'2136 White Avenue', N'Corpus Christi', N'TX', N'78476')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (53, N'male', N'James', N'Peterson', N'220 August Lane', N'Alexandria', N'LA', N'71302')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (54, N'male', N'Billy', N'Catron', N'4768 Deer Haven Drive', N'Greenville', N'SC', N'29607')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (55, N'male', N'Michael', N'Burris', N'3945 Melody Lane', N'Richmond', N'VA', N'23219')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (56, N'female', N'Debbie', N'Ferguson', N'2180 Eva Pearl Street', N'Baton Rouge', N'LA', N'70810')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (57, N'male', N'Demetrius', N'Sinclair', N'3736 Rhapsody Street', N'Ocala', N'FL', N'34471')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (58, N'female', N'Cora', N'Clark', N'4106 Cottonwood Lane', N'Southfield', N'MI', N'48075')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (59, N'male', N'Kevin', N'Norman', N'3254 Primrose Lane', N'Madison', N'WI', N'53703')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (60, N'male', N'Rene', N'Gould', N'1154 Mcwhorter Road', N'Starkville', N'MS', N'39759')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (61, N'female', N'Guadalupe', N'Mobley', N'1753 Sardis Sta', N'Cleburne', N'TX', N'76031')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (62, N'male', N'Joseph', N'Waddle', N'1433 Traction Street', N'Greenville', N'SC', N'29601')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (63, N'female', N'Elfrieda', N'Miller', N'4605 Rubaiyat Road', N'Grand Rapids', N'MI', N'49503')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (64, N'female', N'Ruby', N'Hasson', N'627 Dane Street', N'The Dalles', N'WA', N'97058')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (65, N'female', N'Alice', N'Mcdonald', N'4156 Hiney Road', N'LAS VEGAS', N'NV', N'89128')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (66, N'male', N'Paul', N'Jenkins', N'2240 Marigold Lane', N'Miami Springs', N'FL', N'33166')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (67, N'male', N'Wendell', N'Hirano', N'1794 Modoc Alley', N'Meridian', N'ID', N'83642')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (68, N'female', N'Ann', N'Sroka', N'581 Bel Meadow Drive', N'Ontario', N'CA', N'91762')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (69, N'female', N'Ronda', N'Loyd', N'2950 Hickory Heights Drive', N'Baltimore', N'MD', N'21202')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (70, N'female', N'Phoebe', N'Mckown', N'1855 Shinn Street', N'New York', N'NY', N'10022')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (71, N'male', N'John', N'Hill', N'842 Meadowbrook Mall Road', N'Culver City', N'CA', N'90232')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (72, N'female', N'Mary', N'Bennett', N'4990 Rinehart Road', N'Miami', N'FL', N'33169')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (73, N'female', N'Eve', N'Robinson', N'2869 Pinnickinnick Street', N'CARTERET', N'NJ', N'07008')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (74, N'male', N'John', N'Lyons', N'1108 Olive Street', N'Toledo', N'OH', N'43602')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (75, N'male', N'Ronald', N'Ries', N'3523 Glenwood Avenue', N'CLEVELAND', N'OH', N'44114')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (76, N'female', N'Ruby', N'Cummins', N'2144 Goldleaf Lane', N'Lyndhurst', N'NJ', N'07071')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (77, N'female', N'Gloria', N'Soto', N'4480 Coulter Lane', N'Richmond', N'VA', N'23224')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (78, N'male', N'Albert', N'Covington', N'4270 Upland Avenue', N'STONY RIDGE', N'OH', N'43463')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (79, N'male', N'Robert', N'Sherwood', N'2751 Brannon Avenue', N'Jacksonville', N'FL', N'32202')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (80, N'male', N'Jesus', N'Clark', N'4424 Overlook Drive', N'Lafayette', N'IN', N'47904')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (81, N'female', N'Kari', N'Brookins', N'379 Grove Street', N'Bohemia', N'NY', N'11716')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (82, N'male', N'Maurice', N'Martin', N'2997 Wilkinson Street', N'Nashville', N'TN', N'37211')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (83, N'female', N'Lisa', N'Suggs', N'708 Derek Drive', N'Akron', N'OH', N'44308')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (84, N'male', N'Theodore', N'Kim', N'3933 August Lane', N'Shreveport', N'LA', N'71101')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (85, N'male', N'Greg', N'Olson', N'4421 Forest Drive', N'Washington', N'VA', N'20036')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (86, N'female', N'Stephanie', N'Parkes', N'3271 Ash Street', N'Dallas', N'TX', N'75287')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (87, N'female', N'Myrtice', N'Holmstrom', N'3016 Trymore Road', N'Owatonna', N'MN', N'55060')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (88, N'female', N'Bambi', N'Cruz', N'1581 Red Maple Drive', N'Irvine', N'CA', N'92618')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (89, N'female', N'Patricia', N'Oneal', N'1630 Cedarstone Drive', N'Findlay', N'OH', N'45840')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (90, N'female', N'Inez', N'George', N'2549 Hope Street', N'Plano', N'TX', N'75074')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (91, N'male', N'Robert', N'Worley', N'3087 John Calvin Drive', N'Schaumburg', N'IL', N'60173')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (92, N'male', N'William', N'Byars', N'2175 Sunburst Drive', N'Lehigh Acres', N'FL', N'33936')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (93, N'male', N'Robert', N'Sullivan', N'4104 Watson Street', N'Camden', N'NJ', N'08102')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (94, N'female', N'Susan', N'Gallegos', N'1422 Comfort Court', N'Madison', N'WI', N'53703')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (95, N'male', N'Joseph', N'Costanzo', N'2375 Abia Martin Drive', N'Huntington Station', N'NY', N'11746')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (96, N'male', N'Matthew', N'Bender', N'231 Pretty View Lane', N'Ukiah', N'CA', N'95482')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (97, N'female', N'Theresa', N'Lomonaco', N'3741 Jessie Street', N'Columbus', N'OH', N'43215')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (98, N'female', N'Elaine', N'Keane', N'463 Coventry Court', N'Baton Rouge', N'LA', N'70815')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (99, N'female', N'Nancy', N'Robertson', N'4616 Holden Street', N'San Diego', N'CA', N'92101')

    INSERT [dbo].[fakenames] ([FakeNameID], [gender], [FName], [LName], [Address], [City], [ST], [Zip]) VALUES (100, N'male', N'Henry', N'Smoot', N'1865 Cody Ridge Road', N'Guymon', N'OK', N'73942')

    GO

    print 'Processed 100 total records'

    SET IDENTITY_INSERT [dbo].[fakenames] OFF

    So Now we want to shuffle them.

    select * from fakenames order by LName, fname

    update fakenames

    set FName = n.FName, LName = n.LName

    from

    (

    select FName, LName, FName.RowID from

    (

    select top 100 percent fname, ROW_NUMBER() over (order by newid()) RowID from fakenames order by NEWID()

    ) as FName

    join

    (

    select top 100 percent lname, ROW_NUMBER() over (order by newid()) as RowID from fakenames order by NEWID()

    ) as LName on FName.RowID = LName.RowID

    )n

    join fakenames fn on fn.FakeNameID = n.RowID

    --now it is randomized each time you run this.

    select * from fakenames order by LName, fname

    That should run reasonably fast. It took about 23 seconds with 100,000 rows on my desktop. I assume this is a testing/dev thing that isn't going to be run over and over?

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

  • Thanks Sean for taking time to help me out. Now I have two good solutions that I can work with.

  • You're welcome. Let us know which one ends up performing the best of the three. I would be interested to know which one wins that race. 😀

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

Viewing 11 posts - 1 through 10 (of 10 total)

You must be logged in to reply to this topic. Login to reply