SQL IF语句无法执行
我不懂SQL,我很难找到一个例子来说明我需要做什么 如果条目的isGuest列为1,我有一个表要从中删除。然后我从引用该条目的其他表中删除SQL IF语句无法执行,sql,Sql,我不懂SQL,我很难找到一个例子来说明我需要做什么 如果条目的isGuest列为1,我有一个表要从中删除。然后我从引用该条目的其他表中删除 作为C++开发人员,我基本上想做一个IF检查,看看给定帐户的AcIdTID是否有一个0的ISBUTE,如果跳过删除,则从函数返回。p> 如果我尝试这个,我会得到一个 无效的列名“isGuest” 错误。我知道表名和列名是正确的,所以我不知所措。基于我已经看到的一些令人困惑的论坛帖子,我担心SQL实际上无法实现我在这里想要做的事情 DECLARE @guest
作为C++开发人员,我基本上想做一个IF检查,看看给定帐户的AcIdTID是否有一个0的ISBUTE,如果跳过删除,则从函数返回。p> 如果我尝试这个,我会得到一个
无效的列名“isGuest” 错误。我知道表名和列名是正确的,所以我不知所措。基于我已经看到的一些令人困惑的论坛帖子,我担心SQL实际上无法实现我在这里想要做的事情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;
如果您使用的是MySql,我相信您可以在一条语句中使用,例如:
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输出到临时表中,并使用该ID从其他表中删除。给出了一个很好的解释。您可以发布您的SQL查询吗?另外,您正在使用什么数据库?我尝试的是:从dbo中选择isGuest.Account,其中AccountID=@AccountID,如果isGuest=0,则开始返回0;最后,我想我正在使用mysql。我不确定如何验证您问题中的.table定义和sql是否是一个好的开始。还请注意,SQL对数据集起作用,因此您不会执行“if”语句,您只需删除数据或不删除数据,以guestId=0标识的给定集中的数据为准。我认为我这里的问题是,我根据其中一个表的内容从多个表中删除数据。我不能只到每个表中删除ID为X、isGuest为1的位置。在第一次表删除未发生的情况下,是否有某种方法可以提前退出存储过程?@TimRichard-使用此站点的建议。对于SQL,问题始终包括表的DDL、一些虚拟数据和查询。尽可能使用!在案例之后使用IF语句进行更新,并添加了对两者的引用。