我有两个表。一个拥有Objects
,另一个拥有关于每个对象的Settings
。并非Objects
表中的所有行在Settings
表中都有对应的行。 Settings
表中有一个特殊的行,应该用于“其他”对象。如何加入“其他”行
如何在Objects
和Settings
之间创建连接,以便在有或没有“其他”设置的情况下获得给定设置?
例如,考虑下面的脚本:
CREATE TABLE #Objects (Code nvarchar(20) not null);
CREATE TABLE #Settings (Code nvarchar(20) not null, Value int not null);
INSERT INTO #Objects
VALUES
('A'),
('B'),
('D')
INSERT INTO #Settings
VALUES
('A', 1),
('B', 2),
('C', 3),
('Other', 4)
SELECT
#Objects.Code,
#Settings.Value
FROM
#Objects
JOIN #Settings
ON #Objects.Code = #Settings.Code
OR #Settings.Code = 'Other'
DROP TABLE #Settings, #Objects
我想要得到这样的:
Code | Value
---- | -----
A | 1
B | 2
D | 4
我真的开始是:
Code | Value
----- | -----
A | 1
A | 4
B | 2
B | 4
D | 4
我很好奇看到EXE cution计划对迄今为止的四个工作回答中的每一个都与来自合理大小和索引表的实际数据进行了对比。对于样本数据,它可能会给出与所有答案相同或相似的计划,并且任何差异都太小而无法衡量。 –
现在有五个工作答案:)但是我不愿意投票给他们中的任何一个而没有看到计划。 –
@JoelCoehoorn可悲的是,我的表现要求并不严格('在1000个左右的对象上半小时内跑步'),但是我的开发预算是('你还没有完成它,如果不是为什么?')。所以我猜大数据查询计划将不得不等待另一天。我同意,尽管做分析会很好。 –