仅从重复(访问数据库)中删除1条记录

本文关键字:删除 1条 记录 数据库 访问 | 更新日期: 2023-09-27 18:14:23

我正在预订系统,但是我现在卡住了。

Microsoft access 2010 Tables:

-drinks
-ordered_drinks

结构
tables:
-id,
-..,
-...,
drinks:
-id,
-title,
-price,
ordered_drinks:
-id,
-drink_id,
-table_id,

,我想只删除1个重复的行在有序的饮料表,但如果我试图只删除1饮料从重复,它将删除所有饮料具有相同的drink_id

   public bool deleteDrink(int di)
    {
        bool removed= false;
        dbcom = new OleDbCommand("DELETE FROM ordered_drinks WHERE table_id=@tableId", dbcon);
        dbcom.Parameters.AddWithValue("@tableId",tableId);
        removed = (dbcom.ExecuteNonQuery() >=1)? true : false;
        return removed;//return boolean
    }

有人知道sql语句只从重复中删除1行吗?

我想它在这个方向的某个地方。

仅从重复(访问数据库)中删除1条记录

delete * drinks_ordered where drink_id in (select top(1) where drink_id=@drink_id AND table_id=@tableId

我个人认为重复数据删除表的最好方法是获取行值,删除所有行,然后再插入一行。因为你正在使用Access,这可能是唯一的方法,然后,把一个主键放在那个表上,这样你就不会再有问题了。在SQL Server中,你可以"SET ROWCOUNT 1",之后的所有操作只会影响一行,所以你可以有效地删除一行,当where子句指向许多行时——这种方法的问题是,如果你有三个副本,你将剩下两行,必须一次又一次地运行语句,直到你只剩下一行。使用"存储值,删除所有,重新插入"方法,您可以保证在完成后只有一行。