外键为空且为查询条件是恐怖的事情
--两个截然不同 SELECT isnull(max(ti_goods_count)- sum(isnull(sl_count,0)),0) as ti_goods_count, isnull(max(ti_goods_weight)-sum(isnull(sl_weight,0)),0) as ti_goods_weight, isnull(max(ti_goods_body)- sum(isnull(sl_body,0)),0) as ti_goods_body, isnull(max(ti_prepay_price)- sum(isnull(sl_prepay_price,0)),0) as ti_prepay_price, isnull(max(ti_return_price)-sum(isnull(sl_return_price,0)),0) as ti_return_price, isnull(max(ti_arrive_price)- sum(isnull(sl_arrive_price,0)),0) as ti_arrive_price, isnull(max(ti_month_price)- sum(isnull(sl_month_price,0)),0) as ti_month_price, isnull(max(ti_sum_price)- sum(isnull(sl_sum_price,0)),0) as ti_sum_price, isnull(max(ti_back_is_price)- sum(isnull(sl_isback,0)),0) as ti_back_is_price, isnull(max(ti_back_isnot_price)- sum(isnull(sl_notback,0)),0) as ti_back_isnot_price, isnull(max(ti_back_price)- sum(isnull(sl_back_price,0)),0) as ti_back_price FROM T_SEND_LIST right join t_ticket_info on ti_id = sl_ti_id where sl_ti_id=2317 -------------------------------- SELECT isnull(max(ti_goods_count)- sum(isnull(sl_count,0)),0) as ti_goods_count, isnull(max(ti_goods_weight)-sum(isnull(sl_weight,0)),0) as ti_goods_weight, isnull(max(ti_goods_body)- sum(isnull(sl_body,0)),0) as ti_goods_body, isnull(max(ti_prepay_price)- sum(isnull(sl_prepay_price,0)),0) as ti_prepay_price, isnull(max(ti_return_price)-sum(isnull(sl_return_price,0)),0) as ti_return_price, isnull(max(ti_arrive_price)- sum(isnull(sl_arrive_price,0)),0) as ti_arrive_price, isnull(max(ti_month_price)- sum(isnull(sl_month_price,0)),0) as ti_month_price, isnull(max(ti_sum_price)- sum(isnull(sl_sum_price,0)),0) as ti_sum_price, isnull(max(ti_back_is_price)- sum(isnull(sl_isback,0)),0) as ti_back_is_price, isnull(max(ti_back_isnot_price)- sum(isnull(sl_notback,0)),0) as ti_back_isnot_price, isnull(max(ti_back_price)- sum(isnull(sl_back_price,0)),0) as ti_back_price FROM T_SEND_LIST right join t_ticket_info on ti_id = sl_ti_id where ti_id=2317
如果未作发货则,第一条语句会有数据,第二条将没有数据,虽然是相同的意思ti_id等同于sl_ti_id,但外键为空时就有意外了。!!