SQL 删除缺失数据的内连接

Ale*_*ham 0 mysql sql

我的问题几乎与SQL DELETE with INNER JOIN相同;但我想删除不等于!

我的问题简介: 有2个表,bus_stops,bus_routes;

bus_routes {id, bus_route_id,..other columns..}
bus_stops {id, bus_route_id,..other columns..}
Run Code Online (Sandbox Code Playgroud)

有些路线被删除了,但公交车站还剩下,我也需要删除它们。意味着,我只需要删除没有关联巴士路线的bus_stops!

它的意思是这样的:

DELETE bs.* FROM bus_stops AS bs 
INNER JOIN bus_routes AS br 
ON bs.bus_route_id <> br.bus_route_id
Run Code Online (Sandbox Code Playgroud)

但上面的代码肯定是不行的。

小智 5

您应该使用LEFT JOIN,下面的查询将起作用:

DELETE bs.*  
FROM bus_stops AS bs 
LEFT JOIN bus_routes AS br 
ON bs.bus_route_id = br.bus_route_id
WHERE br.bus_route_id IS NULL
Run Code Online (Sandbox Code Playgroud)