我正在使用DB Facade创建一个临时表,然后使用选择查询,我需要根据条件更新临时表中的某些列
DB::update('update table_temp_topcustomer
set ordercount = aaa.ordercount
from
(select count(id) as ordercount,mobileno
from order_hdrs
group by mobileno
) as aaa
where table_temp_topcustomer .mobileno = aaa.mobileno
');
出现此错误
语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行附近使用'from(from(select count(id)as ordercount,mobileno from order_hdrs group by mobileno)'(SQL:update table_temp_topcustomer set ordercount = aaa.ordercount from (选择count(id)作为ordercount,从order_hdrs group中选择mobileno由mobileno)作为aaa)
我该如何实现?
答案 0 :(得分:1)
UPDATE table_temp_topcustomer JOIN
( SELECT order_hdrs count(*) as ordercount
FROM order_hdrs
GROUP BY mobileno
) AS aaa
ON table_temp_topcustomer.mobileno = aaa.mobileno
SET table_temp_topcustomer.ordercount = aaa.ordercount
答案 1 :(得分:0)
我想您不能在单个查询中完成。根据我的理解。首先获取选择结果并循环更新。
您应该尝试以下类似方法。
$result = DB::select('select count(id) as ordercount,mobileno
from order_hdrs
group by mobileno');
foreach($result as $item) {
DB::update('update table_temp_topcustomer
set ordercount = '. $item->ordercount .'
where table_temp_topcustomer.mobileno = ' $item->mobileno);
}