【问题标题】:Delete query in SQL (Access) in conjuction with dependent data?与依赖数据一起删除 SQL (Access) 中的查询?
【发布时间】:2020-11-06 10:28:20
【问题描述】:

我知道这是一个非常基本的问题,但我无法完成。刚刚开始了解有关数据库的更多信息。我有两张桌子:tblFoodAllowance 和 tblTravelDays。

tblFoodAllowance 由 ID、tripID、dateDay、costs 组成。 tblTravelDay 保存我出差时的所有天数:ID、dateDay。

我正在寻找 SQL 中的删除查询以在 MS Access 中使用它:从 tblFoodAllowance 中删除所有,其中tripID 为 xy(例如 1)并且 tblFoodAllowance.dateDay 不在 tblTravelDates 列表中。我怎样才能做到这一点?

我尝试了多种方法,但要么是语法错误,要么是错误的结果。感谢您的帮助。

我猜是这样的:

DELETE * FROM tblFoodAllowance WHERE tblFoodAllowance.tripID = [tripID] and ()

【问题讨论】:

    标签: sql ms-access subquery sql-delete ms-access-2016


    【解决方案1】:

    你可以使用delete:

    delete from tblFoodAllowance
        where tripID = @xy and
              not exists (select 1
                          from tblTravelDates
                          where tblTravelDates.tripId = tblFoodAllowance.tripId and
                                tblTravelDates.dateDay = tblFoodAllowance.dateDay
                         );
    

    【讨论】:

      【解决方案2】:

      考虑使用not exists 和相关子查询。有点不清楚究竟是哪些列连接了这两个表,但想法是:

      delete from tblFoodAllowance 
      where 
          tripID = 1
          and not exists (
              select 1
              from tblTravelDay
              where tblTravelDay.dateDay = tblFoodAllowance.dateDay
          )
      

      【讨论】:

      • 这行得通,但令人惊讶的是,我不得不运行它两次才能删除所有指定的记录。这是为什么呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 2011-04-14
      • 2016-01-03
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      相关资源
      最近更新 更多