我不知道SQL,我找不到我需要做的例子。
如果条目的isGuest
列为1
,我有一个要删除的表格。然后我从引用该条目的其他表中删除。
作为一名C ++开发人员,我基本上想要检查以查看某个帐户(使用accountID
选择)是否isGuest
0
,并从如果是这样的功能(跳过删除)。
如果我试试这个,我会得到一个
无效的列名称'isGuest'
错误。我知道表名和列名是正确的,所以我很茫然。基于我已经看过的一些令人困惑的论坛帖子,我担心SQL实际上无法做我想做的事。
答案 0 :(得分:0)
如果您使用的是MySql,我相信您可以在一个语句中DELETE
from multiple tables,例如:
DELETE T1, T2, T3
FROM table1 T1
LEFT JOIN table2 T2 ON T1.Id = T2.Id -- Or whatever links your main table to others
LEFT JOIN table3 T3 ON T1.Id = T3.Id
WHERE T1.isGuest = 0 -- Filter the records you want to delete. This is what you were trying the accomplish with IF(isGuest = 0)
否则,您需要将要删除的记录的ID输出到临时表中,并使用它从其他表中删除。 This question给出了一个很好的解释。
答案 1 :(得分:-1)
DECLARE @guest bit;
SELECT
CASE isGuest
WHEN 0 THEN @guest = 0
ELSE @guest =1
END As GuestYesNo
FROM
dbo.Account
WHERE
AccountID = @AccountID;
IF @Guest = 0
BEGIN
-- DoStuff;
END
ELSE
-- DoOtherStuff;