2010-11-20 78 views
0

我有2個表,wordslistsSQL從另一個表中檢查數據時刪除

words屬於列表並且參考listId字段。

lists包含一個username字段。

我需要通過它的id刪除一個單詞,但首先需要檢查用戶名是否正確,因此我需要引用列表表格。

這是我迄今爲止,但它不起作用。

DELETE FROM w 
USING lists AS l INNER JOIN words AS w 
WHERE 
l.username = 'admin' 
AND w.listId = 31 
AND l.id = w.listId 

回答

2
DELETE w FROM words w 
INNER JOIN lists l on l.id = w.listid 
WHERE 
l.username = 'admin' 
AND w.listId = 31 
+0

I C把'AND w.listId'掛到'AND w.id'上,它很奏效,對不起,我沒給你足夠的信息 – jax 2010-11-20 15:26:22

0

我不是100%地肯定我-SQL語法(我使用Oracle),但這應該工作:

DELETE FROM words 
WHERE listid in (
    SELECT 31 from lists where username = 'admin' 
) 

...如果你真的很喜歡,你可以改變內選擇:

SELECT listId from lists where username = 'admin' and listId = 31 

(但不是必要的)

+0

這選擇了31號,我不確定它會返回正確的東西,甚至在Oracle上。 .. – 2010-11-20 15:28:22

+1

正確的......這就是它應該選擇的!這是他試圖刪除的listId。 – Gerrat 2010-11-20 15:31:29

相關問題