복붙노트

[SQL] SQL 서버 업데이트 그룹에 의해

SQL

SQL 서버 업데이트 그룹에 의해

나는 선으로 단지 그룹에서 MS-SQL이되지만 나 오류가이를 실행하기 위해 노력하고있어

update #temp
Set Dos=Count(1)
From Temp_Table2010 s
where Id=s.Total and s.total in (Select Id from #temp)
group by s.Total

수행 아무도 내가 좋은 성능을 가지고이 문제를 해결할 수있는 방법을 알고 있습니다.

해결법

  1. ==============================

    1.시험

    시험

    ;with counts 
    AS 
    ( 
        SELECT total, COUNT(*) as dos
        FROM temp_table2010 
        WHERE total in (select id from #temp)
    )
    UPDATE T 
    SET dos=counts.dos
    FROM #temp T 
    INNER JOIN counts 
        ON t.id = counts.total 
    
  2. ==============================

    2.SQL 서버에서 방금 하위 쿼리에서 할 다음 업데이트 할 테이블에 가입해야 쿼리 업데이트에 통합 할 수 있습니다.

    SQL 서버에서 방금 하위 쿼리에서 할 다음 업데이트 할 테이블에 가입해야 쿼리 업데이트에 통합 할 수 있습니다.

    UPDATE  #temp
    SET     Dos = Cnt
    FROM    #temp 
        INNER JOIN (SELECT Total, COUNT(*) AS Cnt FROM Temp_Table2010 GROUP BY Total) AS s
            ON Id = s.Total 
    

    이렇게 :

    WHERE total in (select id from #temp)
    

    그리고:

     INNER JOIN counts 
        ON t.id = counts.total 
    

    중복입니다.

    이 해결할 수있는 문제의 요구 사항은 "(...) 총"을 가입 할 수 있습니다. 다음 키 그룹과 조인.

  3. ==============================

    3.당신은 우선, 업데이트 쿼리에 집계를 사용할 수 없습니다 - 당신은 원래 문제의 오류 메시지가 포함되지 않았지만, 나는 그게 당신을 말하고 무엇을 생각한다.

    당신은 우선, 업데이트 쿼리에 집계를 사용할 수 없습니다 - 당신은 원래 문제의 오류 메시지가 포함되지 않았지만, 나는 그게 당신을 말하고 무엇을 생각한다.

    당신은 당신의 갱신 전에 집계를 계산하고 임시 테이블에 결과를 저장 한 다음 갱신을 수행하는 해당 테이블에 가입해야합니다.

  4. from https://stackoverflow.com/questions/2853403/sql-server-update-group-by by cc-by-sa and MIT license