Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL IF语句无法执行_Sql - Fatal编程技术网

SQL IF语句无法执行

SQL IF语句无法执行,sql,Sql,我不懂SQL,我很难找到一个例子来说明我需要做什么 如果条目的isGuest列为1,我有一个表要从中删除。然后我从引用该条目的其他表中删除 作为C++开发人员,我基本上想做一个IF检查,看看给定帐户的AcIdTID是否有一个0的ISBUTE,如果跳过删除,则从函数返回。p> 如果我尝试这个,我会得到一个 无效的列名“isGuest” 错误。我知道表名和列名是正确的,所以我不知所措。基于我已经看到的一些令人困惑的论坛帖子,我担心SQL实际上无法实现我在这里想要做的事情 DECLARE @guest

我不懂SQL,我很难找到一个例子来说明我需要做什么

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

作为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语句进行更新,并添加了对两者的引用。