一直在犯这个错误,一直还是要继续犯。
select sum(xxx) where xxx,如果where不存在,返回null,而不是0
象是select count(xxx) where xxx,就会老老实实返回0。不知道为什么mysql有这么个奇怪的设定。
这段代码,如果在shop_stock里面找不到指定的shop_id的记录,那么,由于是null,它不能放在int里,后面的adata.Stock将维持上一次查询时的值,而不是预期中的0。

var adata stockstruct
for rows.Next() {
rows.Scan(&adata.Id, &adata.Name)
sql = "select sum(stock) from shop_stock where shopid=?"
dao.DB.Get(&adata.Stock, sql, adata.Id)
.....
}

标签: none

添加新评论