从SQL数据库中删除元组

3

我将要完成以下的作业, 我有三个表格,分别是:

TblNation with fields: id_nation (key), first nation, second nation
TblAthlete with fields: id_athlete (key), name, surname
TblUnion with fields: id_nation (key), id_athlete(key)

我需要删除与特定姓氏对应的元组(假设姓氏字段没有冗余)。

我已经尝试过:

DELETE FROM TblNation INNER JOIN
    TblUnion ON TblNation.id_Nation = 
    TblUnion.id_nation INNER JOIN
    TblAthlete ON TblUnion.id_athlete = TblAthlete.id_athlete
WHERE TblAthlete.surname = 'something'

但是这段代码不起作用...有人可以帮助我吗?

ps. 我正在尝试在Microsoft SQL Server Management Studio中运行此查询。提前感谢。


请在您的问题中添加一些样本数据,这样很可能会更快地得到一个 正确 的答案。 - Shaneis
谢谢您的回答,您是指需要查看表格内容吗? - M.Orlandi
使用现有的查询语句可能可以正常工作,但是使用内连接时可能会排除您预期包含的行。 - Shaneis
就目前而言,SQL Server 不知道要从哪个表中删除行。@Gofr1 在下面给出了正确的语法。如果你再次卡住了,请看一下 Microsoft 的开发者网络 (MSDN) 上的文档。文档几乎总是包含一个可行的示例,这非常有帮助。 - David Rushton
2个回答

2

试试这个:

DELETE T
FROM TblNation T
INNER JOIN TblUnion TU
    ON T.id_Nation = TU.id_nation
INNER JOIN TblAthlete TA
    ON TU.id_athlete = TA.id_athlete
WHERE TA.surname = 'something'

1
我想你明白为什么要编写一个涉及三个表的连接来删除单个表中的行...
根据您所述的标准(我必须删除与特定姓氏相对应的元组),为什么不直接从TblAthlete中删除,该表具有字段id_athlete(键)、name、surname?
BEGIN TRAN
  DELETE from TblAthlete 
   WHERE surname = 'something';
COMMIT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接