-4

私は SQL を知りません。私が何をする必要があるかの例を見つけるのに苦労しています。

isGuestエントリの列がの場合、削除したいテーブルがあり1ます。次に、そのエントリを参照した他のテーブルから削除します。

C++ 開発者として、私は基本的に if チェックを実行して、特定のアカウント ( で選択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 に答える