2013-05-08 235 views
0

我不知道怎么做,我需要解决它:嵌套查询与删除SQL语句

我有一个select语句:

SELECT 
     sum_lines.id, 
     sum_lines.line_id, 
     sum_lines.summary_id, 
     sum_lines.text_content, 
     sum_tbl.user_id 
FROM 
     sum_lines 
JOIN 
     sum_tbl 
ON 
     sum_lines.summary_id = sum_tbl.id 
WHERE 
     sum_tbl.user_id = 1 

我怎么能删除,这种说法与显示一切删除语句?

+0

古老的问题,与一个古老的[答案... http://stackoverflow.com/questions/439750/t-sql-selecting-rows-to-delete-via-joins/439768#439768] (http://stackoverflow.com/questions/439750/t-sql-selecting-rows-to-delete-via-joins/439768#439768) – 2013-05-08 21:23:49

回答

4

如果你想从两个表中删除,你需要两个删除:

delete sum_lines 
from sum_lines 
join sum_tbl on sum_lines.summary_id = sum_tbl.id where sum_tbl.user_id = 1 

delete from sum_tbl 
where sum_tbl.user_id = 1 

只要确保做一个备份,你删除的东西了。它可以很容易地做事情是这样的:

select * 
into sum_lines_backup 
from sum_lines 

select * 
into sum_tbl_backup 
from sum_tbl 
+0

不起作用:( – thormayer 2013-05-08 21:16:36

+0

我的不好,我已经更新了答案。需要指定要在“删除”语句后直接删除的表。 – TheQ 2013-05-08 21:19:30

0

试试这个:

delete sum_lines from sum_lines as a 

join sum_tbl as b on b.id = a.id 

where b.user_id = 1 

确保列name sum_lines[id]数据必须与sum_tbl[id]匹配,否则它不会工作。也许sum_lines.summary_id = sum_tbl.id与数据库中的数据不匹配。