sql - 查找另一个表中不存在的行
问题描述
我有以下表格。
应用表
Id: 1, 2, 3
用户表
Id, 1, 2, 3
ApplicationUser 表(一个桥接表)
AppId UserId
1 1
1 2
2 1
2 3
我需要一个 SQL 查询来填充 ApplicationUser 表(即表应该是)
ApplicationUser Table (A bridge table)
AppId UserId
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
所以查询应该返回(1, 3) (2, 2) (3, 1) (3, 2) (3, 3)
解决方案
使用存在逻辑的交叉连接:
INSERT INTO ApplicationUser (AppId, UserId)
SELECT a.Id, u.Id
FROM Application a
CROSS JOIN User u
WHERE NOT EXISTS (SELECT 1 FROM ApplicationUser au
WHERE au.AppId = a.Id AND au.UserId = u.Id);
推荐阅读
- reactjs - 使用 firebase 中的现有值更新集合
- python - R 等效于 R 包的 python -m 模块
- windows - 将 OpenBLAS 链接到 MinGW
- c++ - 头文件和库文件的连接
- c++ - macOS 上是否有与 clone() 系统调用等效的功能?
- javascript - Yii2 使用 Select2 和 yii2-formwizard 的表格步骤
- django - django ModelMultipleChoiceField 从一个实例生成多个选项
- sql-server - 合并两条记录以计算时间差异
- flutter - Flutter - 如何获取 AppBar 标题前景色
- asp.net-mvc - Web Api 控制器的通用路由