sql-server-2012 - 查找缺失的设置
问题描述
我的数据库中有两个表。表 A 是信息数据表,表 B 是设置表。如何找到表 A 缺少表 B 中的设置之一。
例如
Table A
username setting
Mark 1
Mark 2
Martin 2
Jane 1
Table B
Possible_Setting
1
2
3
Result Table
username missing_setting
Mark 3
Martin 1
Martin 3
Jane 2
Jane 3
感谢帮助!
解决方案
如果表大小很大,由于交叉连接,这可能效率低下,但这是我能想出的唯一答案。
SELECT a.username, b.Possible_Setting AS missing_setting
FROM
(SELECT DISTINCT username FROM TableA a) a
CROSS JOIN TableB b
WHERE
NOT EXISTS (
SELECT *
FROM TableA real_a
WHERE real_a.username = a.username
AND real_a.setting = b.Possible_Setting)
ORDER BY 1, 2
设置代码:
CREATE TABLE TableA (username varchar(20), setting tinyint)
CREATE TABLE TableB (Possible_Setting tinyint PRIMARY KEY)
INSERT TableA VALUES
('Mark', 1),
('Mark', 2),
('Martin', 2),
('Jane', 1)
INSERT TableB VALUES
(1),
(2),
(3)
推荐阅读
- javascript - 如何将当前时间与小时字符串 JavaScript 进行比较
- c - C : 打印值时的动态间距
- oracle - 将 NLS_SORT 更改为 BINARY_CI 时,Oracle 12c 和 18c 上的查询失败
- microsoft-graph-api - 通过 API 访问 OneDrive 个人保管库
- c# - 在 Visual Studio 2017 中检索连接字符串
- java - 抽象的目的是什么?
- c - 将 x 进行算术左移 n 位 (C)
- azure - 如何将 azure terraform 变量应用于多个 tf 文件一起处理?
- reactjs - contentful / gatsby 中的无限滚动图片库
- r - 文件复制,根据需要制作目录