0

次のクエリがあります。

select acc.Username from accounts acc
left join accountevents ace on acc.accountid=ace.accountid
left join leads lds on lds.leadid=acc.leadid
where lds.DateEntered>'2011-01-01' and lds.DateEntered<'2011-02-01'
Group by acc.Username
Having count(ace.accounteventid)=0

私はそれをdelete文にしたかった:

delete username from accounts 
left join accountevents ace on accounts.accountid=ace.accountid 
left join leads lds on lds.leadid=accounts.leadid
where Leads.DateEntered>'2011-01-01' and lds.DateEntered<'2011-02-01' 
Having count(accountevents.accounteventid)=0

そして、次のエラーが表示されます: キーワード「Having」付近の構文が正しくありません。

助言がありますか?

4

2 に答える 2

5

以下のように書き直したほうがいいと思います。

delete from accounts where username in ( <here goes your select statement> );
于 2012-07-12T13:13:00.987 に答える
0

select クエリから、テーブル accounts がテーブル accountevents および lead と関係を持っていることは明らかです。したがって、最初に、子テーブルまたは外部キー テーブルからレコードを削除し、プライマリ テーブルからレコードを削除する必要があります。DELETE Rule to CASCADEデータベース設計またはテーブルでを設定した場合は、このクエリを実行します。

DELETE FROM [TableName] where UserName ='UserName'   -- TableName should be your primary table it may be Accounts or AccountsEvents or Leads

データベース設計で DELETE ルールを設定していない場合は、3 つのクエリを実行する必要があります。最初に子テーブルからデータを削除し、次に親テーブルからデータを削除します。

Delete from accounts where username = 'name'
Delete from eventsaccounts where accountid = 'accountsid'
Delete from leads where leadid = 'leadid'
于 2012-07-12T13:39:49.163 に答える