如何使用SQL实现跨列关联唯一值在记录多出现时的匹配输出
实现方案
你要的两两宝可梦Power求和结果用自连接即可实现,具体逻辑如下:
- 对dragon表做自关联,分别取别名a、b代表配对的两只宝可梦
- 加入
a.Pokemon < b.Pokemon的关联条件,既可以避免同一只宝可梦和自己配对,也能避免出现(皮卡丘,喷火龙)和(喷火龙,皮卡丘)这类重复的配对结果 - 直接对两张关联表的Power字段求和即可得到配对总战力
参考SQL代码:
SELECT a.Pokemon AS Pokemon1, b.Pokemon AS Pokemon2, a.Power + b.Power AS TotalPower FROM dragon a INNER JOIN dragon b ON a.Pokemon < b.Pokemon -- 如果需要按总战力排序可以加下面这行 ORDER BY TotalPower DESC;
如果你的Power字段存在空值,求和时可以用COALESCE函数做兼容:COALESCE(a.Power, 0) + COALESCE(b.Power, 0) AS TotalPower,避免空值导致求和结果异常。
内容的提问来源于stack exchange,提问作者Deepak Khadke
相关产品推荐
相关产品推荐

