SQL Server-tsql连接/筛选问题
可能是标题错了,但我无法总结出我想要做的事情。这可能就是为什么我的谷歌搜索没有帮助 我有一个SQL Server-tsql连接/筛选问题,sql,sql-server,tsql,Sql,Sql Server,Tsql,可能是标题错了,但我无法总结出我想要做的事情。这可能就是为什么我的谷歌搜索没有帮助 我有一个折扣列表,还有一个团队独家搜索列表(折扣,团队ID) 我调用一个传入@TeamID(int)的存储过程 我想要的是所有的折扣,除非他们在TeamExclusiveDiscounts中并且没有TeamID匹配的@TeamID 所以数据是这样的 表折扣: DiscountID Name ----------------------- 1 Test 1 2
折扣列表
,还有一个团队独家搜索列表
(折扣,团队ID
)
我调用一个传入@TeamID(int)
的存储过程
我想要的是所有的折扣
,除非他们在TeamExclusiveDiscounts
中并且没有TeamID
匹配的@TeamID
所以数据是这样的
表折扣
:
DiscountID Name
-----------------------
1 Test 1
2 Test 2
3 Test 3
4 Test 4
5 Test 5
DiscountID TeamID
-----------------------
1 10
2 10
2 4
3 8
表teamexclusivediscont
:
DiscountID Name
-----------------------
1 Test 1
2 Test 2
3 Test 3
4 Test 4
5 Test 5
DiscountID TeamID
-----------------------
1 10
2 10
2 4
3 8
预期成果:
- 搜索
我应该会得到折扣1,2,4,5TeamID=10
- 搜索
我应该会得到4,5的折扣TeamID=5
- 搜索
我应该会得到3、4、5的折扣TeamID=8
因此,我在寻找存储过程的T-SQL,它将选择正确的折扣(SQL Server)。谢谢 您能试试这个吗?它只选择有团队折扣记录或根本没有团队折扣记录的记录
SELECT * FROM Discounts D
WHERE
EXISTS (
SELECT 1
FROM TeamExclusiveDiscount T
WHERE T.DiscountID = D.DiscountID
AND TeamID = @TeamID
)
OR
NOT EXISTS (
SELECT 1
FROM TeamExclusiveDiscount T
WHERE T.DiscountID = D.DiscountID
)
你能试试这个吗?它只选择有团队折扣记录或根本没有团队折扣记录的记录
SELECT * FROM Discounts D
WHERE
EXISTS (
SELECT 1
FROM TeamExclusiveDiscount T
WHERE T.DiscountID = D.DiscountID
AND TeamID = @TeamID
)
OR
NOT EXISTS (
SELECT 1
FROM TeamExclusiveDiscount T
WHERE T.DiscountID = D.DiscountID
)
我喜欢将英文描述直接翻译成SQL(至少是第一次): “所有折扣,除非他们在TeamExclusiveDiscounts中并且没有与@TeamID匹配的TeamID。”
我喜欢将英文描述直接翻译成SQL(至少作为第一步): “所有折扣,除非他们在TeamExclusiveDiscounts中并且没有与@TeamID匹配的TeamID。”
下一次添加你一直在挣扎的代码时,我没有打扰@Horaciux,因为它只是一堆杂乱的sql,我甚至觉得我还差一点。通常我会这样做。下次再添加你一直在挣扎的代码。我没有打扰@Horaciux,因为它只是一堆乱七八糟的sql,我甚至都不觉得我离它很近。通常我会这样做。谢谢,这确实有效,但会有一个“加入”的答案,因为它更简洁。感谢你的努力:)没关系。请注意,如果TeamExclusiveDiscovery中存在重复项,则加入将“重复计算”。但是如果你对折扣ID/TeamID有一个独特的限制,那就不会有问题了。谢谢,这确实有效,但是会有一个“加入”的答案,因为它更简洁。感谢你的努力:)没关系。请注意,如果TeamExclusiveDiscovery中存在重复项,则加入将“重复计算”。但如果您对折扣ID/TeamID有唯一的限制,这不会是一个问题。谢谢您的回复!这确实有效,我需要更好地将我的英语翻译成sql,正如你所建议的:)谢谢你的回复!这确实有效,我需要更好地将我的英语翻译成sql,正如您所建议的:)