有四张桌子
Service(Id, AssetId,PlanId)
Plan(Id)
Asset(Id)
NonServiceChargeAsset (ServiceId,AssetId)
Service Table
Id AssetId PlanId
A a 1
A b 1
A c 1
A d 1
B a 2
B b 2
B c 2
B d 2
C e 3
D f 3
Asset Table
Id
a
b
c
d
e
f
Plan Table
Id
1
2
3
NonServiceChargeAsset Table
ServiceId AssetId
A a
A b
B c
B d
Output
ServiceId AssetId PlanId
A c 1
A d 1
B a 2
B b 2
C e 3
D f 3
select
s.*
from
service s
full outer join
nonservicechargeAsset ns on s.id = ns.serviceid
where
s.assetid not in (select ns.assetid from nonservicechargeasset ns)
我不知道如何使用外部连接查询来获得上面的结果。
任何能提供帮助和建议的人将不胜感激。
对于内容的格式很抱歉,如果有人能帮助重新格式化,帮助理解这个问题会很好。
最佳答案
我花了很多钱来理解您的目标,但是我发现您需要服务表中的所有行,它们的对(id,assetid)不出现在表nonServiceChargeAset中。假设这样,我想这样做:
SELECT
s.*
FROM
Service AS s
LEFT JOIN
NonServiceChargeAsset AS ns ON ns.ServiceId = s.Id AND ns.AssetId = s.AssetId
WHERE
ns.AssetId IS NULL AND ns.ServiceId IS NULL
关于mysql - 内部联接和完全外部联接查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52808791/