用于删除查询的SQL

jrh*_*ath 2 mysql sql sql-delete

我正在尝试为我的程序编写SQL查询,但我无法弄清楚如何.我不太了解SQL.

我正在尝试实施在线团队系统(对于某些网站).我有两张桌子:

teams | teamId, eventId
teammembers | teamId, userId, status
Run Code Online (Sandbox Code Playgroud)

现在,我需要:删除teammembers对应的eventId为teamId1的所有记录.

我尝试着:

delete from teammembers where teamId=teams.teamId and teams.eventId=1;
Run Code Online (Sandbox Code Playgroud)

我不确定这是否真的在做我想做的事情.

这个查询是错误的,如果是(可能是),我该如何编写这样的查询?

hob*_*ave 12

你没有指定你的RDBMS所以它在MySQL中

DELETE teammembers FROM teammembers
JOIN teams on teammembers.teamId = teams.teamId
WHERE teams.eventId = 1
Run Code Online (Sandbox Code Playgroud)


HLG*_*GEM 6

这就是我在SQL Server中要做的事情

DELETE tm 
--select tm.*
FROM teammembers tm
JOIN teams t on tm.teamId = t.teamId 
WHERE t.eventId = 1 
Run Code Online (Sandbox Code Playgroud)

通过在注释中嵌入一个select,我可以手动运行这一部分,看看在我开发过程中运行删除之前我将要影响的记录.

select tm.*
FROM teammembers tm
JOIN teams t on tm.teamId = t.teamId 
WHERE t.eventId = 1 
Run Code Online (Sandbox Code Playgroud)

我从来没有第一次运行删除声明而没有检查我认为我要删除的记录是我打算删除的记录.此检查将使您更加担心更复杂的删除是否仅影响您想要影响的记录.