SQL IF语句不会执行

时间:2012-10-29 16:43:19

标签: sql

我不知道SQL,我找不到我需要做的例子。

如果条目的isGuest列为1,我有一个要删除的表格。然后我从引用该条目的其他表中删除。

作为一名C ++开发人员,我基本上想要检查以查看某个帐户(使用accountID选择)是否isGuest 0,并从如果是这样的功能(跳过删除)。

如果我试试这个,我会得到一个

  

无效的列名称'isGuest'

错误。我知道表名和列名是正确的,所以我很茫然。基于我已经看过的一些令人困惑的论坛帖子,我担心SQL实际上无法做我想做的事。

2 个答案:

答案 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;

CASE statement IF..ELSE statement