-1

私はフォーラムシステムに取り組んでおり、特定のフォーラムからすべてのトピックと投稿を削除する必要があります。

postsすべての投稿を保持するテーブルがあります。各投稿にtopic_idは、それが属するトピックのIDであるフィールドがあります。トピックはtopicsテーブルにあり、各トピックにforum_idは、それが属するフォーラムのIDであるフィールドがあります。

では、ID1のフォーラムを削除することにした場合、このフォーラムからすべてのトピックと投稿を削除するにはどうすればよいですか?

4

2 に答える 2

3

まず最初に、データ構造をよく見ることをお勧めします。ON DELETE CASCADEフレーバーの外部キー制約を使用すると、サブ削除が自動的に行われます。これは、得られる利点の 1 つにすぎません。

なんらかの理由でそのような制約を採用できない、または採用したくない場合は、関連するトピックや投稿をどのように選択するかを検討することから始めてください。これにより、非常に良いスタートが切れるはずです。

あなたの特定の例では、

DELETE FROM posts
WHERE topic_id IN (
     SELECT id FROM topics WHERE forum_id=[id-to-delete]
  )

その後

DELETE FROM topics WHERE forum_id=[id-to-delete]

トリックを行う必要があります。

お勧めしませんので、ご了承ください。データの整合性のためにデータ整合性ツールを使用します。

于 2012-12-16T18:34:56.380 に答える
0

この sql は、フォーラム 1 に関連するすべての投稿を削除する必要があります。トピックはデータベースに残っているため、追加で削除する必要があります。SQLをテストしていないので、試してみてください:)

DELETE FROM
    posts
WHERE 
    topic_id
IN (
    SELECT 
        topic_id
    FROM
        topics
    WHERE
        forum_id = 1
)
于 2012-12-16T18:30:52.680 に答える