You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何根据关联表客人姓名删除桥接表内对应预订记录

实现指定姓名客人预订记录删除的SQL方案

有两种简单、常用的实现方式:

方法1:子查询写法(兼容性最好,适配所有主流SQL数据库)

通过子查询先匹配到对应姓名的客人ID,再根据ID删除桥接表中的预订记录:

DELETE FROM Guest_Bridge_Rooms
WHERE Guest_ID IN (
    SELECT Guest_ID 
    FROM Guest
    WHERE GuestName = N'John Doe'
);

注意:由于GuestName字段是NVARCHAR类型,字符串前加N可以避免特殊字符、非英文内容的编码适配问题。

方法2:关联JOIN写法(适合多关联条件的复杂场景)

直接关联客人表和桥接表进行删除,以SQL Server语法为例:

DELETE gbr
FROM Guest_Bridge_Rooms gbr
INNER JOIN Guest g 
    ON gbr.Guest_ID = g.Guest_ID
WHERE g.GuestName = N'John Doe';

操作注意事项

  • 执行删除前务必先运行SELECT语句验证匹配的记录是否正确,避免误删:
    SELECT * FROM Guest_Bridge_Rooms
    WHERE Guest_ID IN (
        SELECT Guest_ID FROM Guest WHERE GuestName = N'John Doe'
    );
    
  • 如果存在同名客人的情况,上述写法会删除所有同名客人的预订记录,如需精确匹配建议额外加上手机号、地址等唯一特征字段组合筛选
  • 生产环境操作建议开启事务,确认删除结果符合预期后再提交,出错可回滚:
    BEGIN TRANSACTION;
    
    DELETE FROM Guest_Bridge_Rooms
    WHERE Guest_ID IN (
        SELECT Guest_ID FROM Guest WHERE GuestName = N'John Doe'
    );
    
    -- 验证删除行数、内容无误后执行提交,出错则执行ROLLBACK TRANSACTION
    COMMIT TRANSACTION;
    

内容的提问来源于stack exchange,提问作者Craig Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:15:06