如何从关系数据库中删除行

Nan*_*ano 1 sql-server delete

所以我有两个表的数据库。并且它们之间有外键关系。我想做一些测试,但桌子太大了。我想删除这些表中的大部分数据,只在第一个表中保留大约 500 行,在第二个表中保留相关行,这样测试会更快。我怎样才能做到这一点?

数据库结构: 在此处输入图片说明

Han*_*dyD 6

一种简单的方法是将这些表中的行提取到临时表中,然后截断源表。

例子:

-- Load the top 500 UUT_RESULT records into a temp table
SELECT TOP (500) *
INTO #UUT_RESULT_TEMP
FROM UUT_RESULT
ORDER BY ID

-- Load the related STEP_RESULT records into a separate temp table
SELECT *
INTO #STEP_RESULT_TEMP
FROM STEP_RESULT
WHERE UUT_RESULT IN (SELECT TOP (500) FROM UUT_RESULT ORDER BY ID)

-- Remove the record
TRUNCATE TABLE STEP_RESULT
TRUNCATE TABLE UUT_RESULT

-- Load the records back in
INSERT INTO UUT_RESULT
SELECT * FROM #UUT_RESULT_TEMP

INSERT INTO STEP_RESULT
SELECT * FROM #STEP_RESULT_TEMP
Run Code Online (Sandbox Code Playgroud)

使用 TRUNCATE 将有助于加快速度,因为这是一个最少记录的操作。