programing

선택 쿼리에서 테이블을 업데이트하는 방법

goodsources 2023. 1. 23. 10:13
반응형

선택 쿼리에서 테이블을 업데이트하는 방법

DB 파사드를 사용하여 임시 테이블을 만들고 select 쿼리를 사용하여 조건에 따라 임시 테이블의 일부 열을 업데이트해야 합니다.

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 서버 버전에 해당하는 설명서에서 "from" (count(id) as order count, order_hdrs group from mobileno by mobileno by mobileno set ord = aaa count from from order)에 가까운 올바른 구문을 확인합니다.ount(id)는 order count, suppeno from order_hdrs group by mobileno)는 aaa입니다.

어떻게 하면 좋을까요?

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 

한 번에 할 수 없는 질문인 것 같아요.제가 알기로는요.먼저 선택 결과를 가져오고 루프 실행 업데이트를 수행합니다.

당신은 다음과 같은 것을 시도해야 합니다.

$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);
}

언급URL : https://stackoverflow.com/questions/56231510/how-to-update-a-table-from-a-select-query

반응형