我需要实现逻辑“除列表外的所有逻辑”,单个查询在所有路径上显示一个小部件,除了列出。 我有下一个查询:
SELECT *
FROM widgets w0_
LEFT JOIN widget_route w1_
ON w0_.id = w1_.widget_id
LEFT JOIN routes r2_
ON w1_.route_id = r2_.id
WHERE r2_.id IS NULL OR w1_.id = 3
3 是当前路线的ID,我是动态的。但是我需要在widget_route
表
有表结构:
窗口小部件: id,name,已发布
widget_route: id,widget_id,route_id
路线: id,name,path
有人能帮助我吗?
答案 0 :(得分:1)
这是您选择widgets
widget_route
的方法
通过内部选择:
SELECT
*
FROM widgets w
WHERE w.id NOT IN (SELECT
wr.widget_id
FROM widget_route wr);
左连接:
SELECT
*
FROM widgets w
LEFT JOIN widget_route wr ON wr.widget_id = w.id
WHERE wr.id IS NULL;
通过widgets
选择所有widget_route
未与ID为3的路线相关联的方式:
通过内部选择:
SELECT
*
FROM widgets w
WHERE w.id NOT IN (SELECT
wr.widget_id
FROM widget_route wr
WHERE wr.route_id = 3);
左连接:
SELECT
*
FROM widgets w
LEFT JOIN widget_route wr ON wr.widget_id = w.id AND wr.route_id = 3
WHERE wr.id IS NULL;