1

誰かが次のクエリの削除ステートメントを書く方法を教えてもらえますか?

      SELECT     a.UserID, b.UserEmailAddress
      FROM  tblUserProgramme AS a LEFT OUTER JOIN

      tblUser AS b ON b.UserID = a.UserID LEFT OUTER JOIN
      tblWorkGroup AS c ON c.WorkGroupID = b.WorkGroupID

      WHERE(a.ProgrammeID = 59) AND (a.UserID NOT IN

          (SELECT     UserID FROM tblUser AS a WHERE (WorkGroupID IN
             (SELECT     WorkGroupID FROM tblWorkGroup WHERE                          
             (WorkGroupName  LIKE  '%Insight%') OR (WorkGroupName LIKE '%Other%'))))) 

      AND (b.UserEmailAddress NOT IN
            (SELECT     email FROM          tmpUsers))

      ORDER BY b.UserEmailAddress

サーバーはSQLServer2005です

4

4 に答える 4

4

クエリは

Delete from 

 ( 
 SELECT     a.UserID, b.UserEmailAddress
  FROM  tblUserProgramme AS a LEFT OUTER JOIN
  tblUser AS b ON b.UserID = a.UserID LEFT OUTER JOIN
  tblWorkGroup AS c ON c.WorkGroupID = b.WorkGroupID
  WHERE(a.ProgrammeID = 59) AND (a.UserID NOT IN
(SELECT     UserID FROM tblUser AS a WHERE (WorkGroupID IN
(SELECT     WorkGroupID FROM tblWorkGroup WHERE (WorkGroupName  LIKE           
'%Insight%') OR (WorkGroupName LIKE '%Other%'))))) AND (b.UserEmailAddress NOT IN
(SELECT     email FROM          tmpUsers))
ORDER BY b.UserEmailAddress
) a
于 2012-09-06T09:44:35.073 に答える
3

構文はDB固有です
。tblUserProgrammeから削除する場合は、ほとんどのデータベースでこれが機能するはずです。

DELETE A
FROM tblUserProgramme AS a 
 .....
于 2012-09-06T09:38:50.197 に答える
2

一般に、SQL Serverでは、SELECTが単一のテーブルからの列のみを返す場合、次のように特定のSQLクエリに一致するすべてのレコードを削除できます。

DELETE x
FROM
(
   -- Any query which returns data from a single table, that you wish to delete
) x;

または、CTEを使用します。

;WITH x as 
(
   -- Any query which returns data from a single table, that you wish to delete
)
DELETE x;
于 2012-09-06T09:50:51.720 に答える
2

迅速な回答をありがとうございました:)正解はかなりありましたが、最初の回答を選択する必要がありました:)

ジョーGジョセフが言ったように、これは私がしたことです

DELETE a
from dbo.tblUserProgramme a
LEFT OUTER JOIN tblUser b ON b.UserID = a.UserID
LEFT OUTER JOIN tblWorkGroup c ON c.WorkGroupID = b.WorkGroupID
where a.ProgrammeID = 59 AND 
a.UserID  NOT IN (SELECT UserID  FROM tblUser a WHERE a.WorkGroupID IN
(SELECT WorkGroupID FROM tblWorkGroup
WHERE WorkGroupName like '%Insight%' OR WorkGroupName like '%Other%')) 
 AND b.UserEmailAddress NOT IN(SELECT email FROM tmpUsers)
于 2012-09-06T09:54:55.730 に答える