【问题标题】:How to delete data without losing them如何在不丢失数据的情况下删除数据
【发布时间】:2017-04-07 14:13:30
【问题描述】:

有两个表:

  1. 学生(STUDENT_ID、GROUP_ID)
  2. GROUPS(GROUP_ID,NAME)

我需要编写从指定组中删除学生的查询(假设有带有“target_id”的组)而不丢失任何数据。

我试图解释另一个词。一个学生可以在多个小组中学习。其中一个组是带有“target_id”的组。如果我们删除学生,他将从所有组中消失。但我需要这个学生只从一个群体中消失。

与组相同 - 查询不应删除任何组。

【问题讨论】:

  • 有一个链接表 student_group 与学生 id 和组 id。从组中删除时,只需从链接表中删除相关行。
  • Edit 您的问题并添加您正在使用的查询。一些样本数据和预期结果也会有所帮助。 Formatted 文本no screen shots
  • DELETE FROM students s WHERE s.group_id IN(SELECT t.group_id FROM groups t WHERE t.group_id = s.group_id) ?
  • @JonStirling:students 表(如果这是完整的列列表)看起来非常像链接表
  • @a_horse_with_no_name 可能是真的,但如果是这样,那是一些糟糕的表命名。

标签: sql postgresql


【解决方案1】:

您所描述的是多对多关系。这通常通过创建第三个表来建模

STUDENT_GROUP
STUDENT_ID     GROUP_ID

然后您将从 STUDENTS 表中删除 GROUP_ID。这样,学生和小组都独立于任何学生小组成员记录而存在。

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 2012-09-26
    • 1970-01-01
    • 2023-03-08
    • 2020-11-20
    • 1970-01-01
    • 2012-04-30
    • 2016-04-27
    • 2015-01-13
    相关资源
    最近更新 更多