select one.pk_voucher,one.pk_detail,cash.* from gl_detail one left join (select pk_detail,sum(money) as money from gl_cashflowcase t1 inner join bd_cashflow t2 on t1.pk_cashflow = t2.pk_cashflow group by pk_detail) cash on one.pk_detail = cash.pk_detail 同样的代码语句在不同的机器执行出的结果不一样,应该不是语句的问题
单独查一下select pk_detail,sum(money) as money from gl_cashflowcase t1 inner join bd_cashflow t2 on t1.pk_cashflow = t2.pk_cashflow group by pk_detail 这一段,结果集中pk_detail有值么
我觉得是没有问题的,理论上crash既然是空表,crash.*应该都是null的。
b既然是空表,b.pk_detail 怎么可能还会有值呢?
把第一个cash括号里面的代码拿出来单独执行看看?pk_detail是t1还是t2表里面的字段?
问题解决了,方法如下: create table gl_cashflowcase_back as select * from gl_cashflowcase; drop table gl_cashflowcase; create table gl_cashflowcase as select * from gl_cashflowcase_back; 纠结,造成这种现象的原因,是缓存......
from gl_detail one
left join (select pk_detail,sum(money) as money
from gl_cashflowcase t1
inner join bd_cashflow t2 on t1.pk_cashflow = t2.pk_cashflow
group by pk_detail) cash
on one.pk_detail = cash.pk_detail
同样的代码语句在不同的机器执行出的结果不一样,应该不是语句的问题
from gl_cashflowcase t1
inner join bd_cashflow t2 on t1.pk_cashflow = t2.pk_cashflow
group by pk_detail
这一段,结果集中pk_detail有值么
create table gl_cashflowcase_back as select * from gl_cashflowcase;
drop table gl_cashflowcase;
create table gl_cashflowcase as select * from gl_cashflowcase_back;
纠结,造成这种现象的原因,是缓存......