我有一个关于 SQL 的病态问题,所以我通常通过构建快速软件应用程序来处理我的 SQL 问题来对我的所有数据库问题进行分类。
(就像我在这种情况下所做的那样)
感谢 StackOverflow,我想我可能会因为正确性而感到羞耻,所以我想学习如何在实际 SQL 或 T-SQL 本身中进行这种 SQL 故障排除(如果可能的话):
我有:
数据库 DB1 表 A (unitNo, BuildingNo)
数据库 DB2 表 B (unitNo, BuildingNo)
我想从数据库 DB1 中找出表 A 上存在的单元(单元号),而数据库 DB2 中的表 B 上不存在这些单元(单元号),反之亦然。
可以有多个单元具有相同的单元号,这是因为可以将相同的单元号分配给不同建筑物的单元。
我没有对任何数据库的写访问权。
我希望这不会被视为“给我的 codz”帖子,我想知道比我更流利的 SQL 的人如何对这种算法进行排序,教程或提示的帖子非常受欢迎,不需要完整的代码,但如果它有助于有意义,那么请这样做。
起初我以为我可以从一个表中获取所有单元号,然后从另一个表中排除它们,如下所示:
select concated.unit from
( SELECT ( unitNo + ',' + CONVERT(varchar(12), BuildingNo) ) as unit
FROM A) concated
having concated.unit not in
(
'201,1',
'202,1',
'203,1',
'204,1',
'205,1',
'206,1',
[...]
这通常会起作用,但是任何一个表中的单元数量都是巨大的,尝试这样做会使 SQL 服务器崩溃:
“堆栈空间不足”
谢谢,
里克