-4

我不知道 SQL,而且我无法找到我需要做的示例。

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

作为 C++ 开发人员,我基本上想做一个 if 检查以查看给定帐户(用 an 选择accountID)是否具有isGuestof 0,如果是则从函数返回(跳过删除)。

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

无效的列名“isGuest”

错误。我知道表名和列名是正确的,所以我很茫然。根据我已经看到的一些令人困惑的论坛帖子,我开始担心 SQL 不能真正做我想做的事情。

4

2 回答 2

0

如果您使用的是 MySql,我相信您可以在单个语句中DELETE从多个表中获取,例如:

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 输出到临时表中,并使用它从其他表中删除。 这个问题给出了很好的解释。

于 2012-10-29T17:21:03.953 回答
-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 语句 IF..ELSE 语句

于 2012-10-29T17:20:18.720 回答