在表中(在Microsoft中),我有大量重复字段的记录,例如field-1。我必须更改表并将field-1设置为主键。但正如你所知,这是不可能的。因此,我希望更改重复数据的field-1值。例如,现在我有一张这样的桌子:
field-1 | field-2
1 | f1
1 | f2
2 | f3
2 | f4想要改变到这一点:
field-1 | field-2
1 | f1
201 | f2
2 | f3
202 | f4注意:
重复记录的最大数量是2。
我怎么能这么做?
发布于 2017-03-19 18:26:15
这有点复杂,但你可以试试这个。
创建一个复制表来存储重复的表。在insert语句中使用此查询:
SELECT field-1,COUNT(*) AS COUNT
FROM yourtable
GROUP BY field-1
HAVING COUNT(*) = 2创建一个nonDuplicate表来存储非重复项。在insert语句中使用此查询:
SELECT field-1,COUNT(*) AS COUNT
FROM yourtable
GROUP BY field-1
HAVING COUNT(*) = 1创建一个duplicateValue表来存储已修改的重复值。在insert语句中使用此查询之前,您需要修改下面的case语句以使用Access。这里有一些链接应该对你有帮助。
--Modify the 2nd instance of the duplicate field
--If the row number is Odd, then the value is the same
--If the row number is Even, then 200 is added to the value
SELECT
--This is how you would do it with SQL Server
--You will need to figure out how to modify this code to work with Access
CASE WHEN ROW_NUMBER() OVER (ORDER BY field-1 ASC) % 2 <> 0
THEN field-1 ELSE field-1 + 200 END AS 'field-1'
--THE ABOVE CASE STATEMENT NEEDS TO BE MODIFIED FOR ACCESS
,field-2
FROM yourtable
JOIN duplicateTable ON yourtable.field-1 = duplicateTable.field-1创建一个nonDuplicateValue表来存储非重复值。在insert语句中使用此查询:
--Get the values of field 1 and field 2
--from non duplicate rows
SELECT field-1,field-2
FROM yourtable
JOIN nonDuplicateTable ON yourtable.field-1 = nonDuplicateTable.field-1中的插入
SELECT field-1,field-2
FROM duplicateValues
UNION
SELECT field-1,field-2
FROM nonDuplicateValueshttps://dba.stackexchange.com/questions/167520
复制相似问题