‘),(’‘Djibouti’),(‘多米尼加共和国’),(‘阿尔及利亚’),(‘厄瓜多尔’),(‘埃及’),(‘埃及’),’‘西方’ 撒哈拉 </跨度> ‘),(’‘厄立特里亚’),(’‘埃塞俄比亚’),(‘斐济’),(‘福克兰群岛(马尔维纳斯)’),(‘密克罗尼西亚’),(联邦 )
我没有在这里修改你的主要查询,只是演示了一种机制来选择最适用的特定效率:
SELECT p.*, COALESCE(mostspecific.efficiency, midspecific.efficiency, leastspecific.efficiency) as best_e FROM Project p LEFT JOIN Efficiency mostspecific ON p.devlevel = mostspecific.devlevel AND p.sector = mostspecific.sector AND p.subsector = mostspecific.subsector LEFT JOIN Efficiency midspecific ON p.devlevel = midspecific.devlevel AND p.sector = midspecific.sector AND midspecific.subsector IS NULL LEFT JOIN Efficiency leastspecific ON p.devlevel = leastspecific.devlevel AND leastspecific.sector IS NULL AND leastspecific.subsector IS NULL
逻辑起作用是因为JOIN会在匹配方面有所不同。最小的特定应该始终匹配,med应该多次,最多,几次。 Coalesce从左到右选择第一个非空值,因此通过将效率按最可能失败的顺序(为空)设置为最小,意味着应选择最相关的特定值。