2013-05-08 245 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與數據庫中的數據不匹配。