SQL Server의 SELECT에서 어떻게 업데이트합니까?


3694

에서 SQL 서버 , 그것은 할 수 있습니다INSERT 사용하여 테이블에 SELECT문을 :

INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3 
FROM other_table 
WHERE sql = 'cool'

? 를 통해 업데이트 할 수도 SELECT있습니까? 값이 포함 된 임시 테이블이 있고 해당 값을 사용하여 다른 테이블을 업데이트하고 싶습니다. 아마도 이런 식으로 뭔가 :

UPDATE Table SET col1, col2
SELECT col1, col2 
FROM other_table 
WHERE sql = 'cool'
WHERE Table.id = other_table.id

답변:


5369
UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'

16
테이블 ( SET Table.other_table_id = @NewValue) 사이의 링크를 편집하는 경우 ON 문을 다음과 같이 변경하십시오.ON Table.id = @IdToEdit AND other_table.id = @NewValue
Trisped

11
@RogerRay,이 질문은 Microsoft SQL Server에 관한 것입니다. 불행히도 다양한 SQL 구현 사이의 구문은 다를 수 있습니다.
찰스 우드

2
@CharlesWood 예. MySQL에서도 같은 질문이 있습니다. 누군가 MySQL을 구현하고 모든 사람들과 공유하는 방법을 알고 있다면 좋을 것입니다. 많은 사람들이 MySQL 버전 솔루션을 찾고 있다고 확신합니다
Roger Ray

1
세트에서 별칭을 어떻게 사용합니까? 테이블 세트 업데이트 a.col1 = b.col2 테이블 a 내부 조인 table2 b a.id = b.id; 대신 업데이트 테이블 세트 table.col1 = b.col2를 테이블의 내부 조인 table2 b에서 a.id = b.id로 사용해야합니다.
ThinkCode

11
다소 관련이 있기 때문에 종종 UPDATE 쿼리를 SELECT 문으로 먼저 작성하여 실행 전에 업데이트 될 데이터를 볼 수 있습니다. 세바스찬 커버 최근 블로그 게시물이하는 기술 : sqlity.net/en/2867/update-from-select
dennislloydjr

777

SQL Server 2008 이상에서 MERGE

MERGE INTO YourTable T
   USING other_table S 
      ON T.id = S.id
         AND S.tsql = 'cool'
WHEN MATCHED THEN
   UPDATE 
      SET col1 = S.col1, 
          col2 = S.col2;

또는

MERGE INTO YourTable T
   USING (
          SELECT id, col1, col2 
            FROM other_table 
           WHERE tsql = 'cool'
         ) S
      ON T.id = S.id
WHEN MATCHED THEN
   UPDATE 
      SET col1 = S.col1, 
          col2 = S.col2;

122
MERGE"업데이트"레코드에도 사용할 수 있습니다. 즉, UPDATE일치하는 레코드가 존재하면 일치 하는 것이 없으면 INSERT새 레코드
brichins

16
이것은 동등한 update ... join 문보다 약 10 배 빠릅니다.
Paul Suart

17
MERGE는 삭제에도 사용할 수 있습니다. 그러나 TARGET 테이블은 원격 테이블이 될 수 없으므로 MERGE에주의하십시오.
Möoz


16
@SimonD : SQL Server 키워드를 선택하면 버그가 발견됩니다. 네 입장? 나는 사람들 과 관련하여 더 많은 버그 (그리고 더 근본적인 버그)가 UPDATE있으며 MERGE, 사람들은 방금 그들과 함께 사는 법을 배웠으며 풍경의 일부가되었습니다 ( '기능'). UPDATE블록에 새로운 아이 가있을 때 블로그가 존재하지 않았다고 생각하십시오 .
언젠가

671
UPDATE YourTable 
SET Col1 = OtherTable.Col1, 
    Col2 = OtherTable.Col2 
FROM (
    SELECT ID, Col1, Col2 
    FROM other_table) AS OtherTable
WHERE 
    OtherTable.ID = YourTable.ID

7
지금까지 가장 간단합니다! 그러나 내부 SELECT에서 ID 필드가 누락되었습니다 . 당신은 일에 WHERE 절이 필요합니다
존 도허티에게

12
이것은 거의 모든 DBMS에서 작동하는 경향이 있습니다. 즉 한 번만 배우고 어디에서나 실행할 수 있습니다. 이것이 성능보다 더 중요한 경우, 특히 업데이트가 일부 데이터를 수정하기위한 업데이트 인 경우이 답변을 선호 할 수 있습니다.
Alan Macdonald 2019

2
첫 번째 테이블을 두 번째의 집계로 설정해야하는 경우에는 수행 할 수없는 SET Table_A.col1 = SUM(Table_B.col1)(또는 다른 집계 함수) 집계를 선택 하위 쿼리에 넣을 수 있습니다 . 이 목적에 대한 Robin Day의 대답보다 낫습니다.
Jason S

280

다음에 대한 Robin의 탁월한 답변 을 수정했습니다 .

UPDATE Table
SET Table.col1 = other_table.col1,
 Table.col2 = other_table.col2
FROM
    Table
INNER JOIN other_table ON Table.id = other_table.id
WHERE
    Table.col1 != other_table.col1
OR Table.col2 != other_table.col2
OR (
    other_table.col1 IS NOT NULL
    AND Table.col1 IS NULL
)
OR (
    other_table.col2 IS NOT NULL
    AND Table.col2 IS NULL
)

WHERE 절이 없으면 영향을받을 필요가없는 행에도 영향을 미쳐 실제로 실행되어서는 안되는 인덱스 재 계산 또는 트리거를 유발할 수 있습니다.


7
이것은 열 중 어느 것도 널 입력 가능하지 않다고 가정합니다.
Martin Smith

4
네 말이 맞아, 손으로 예제를 입력하고있었습니다. 나는 그것을 처리하기 위해 where 문에 세 번째와 네 번째 절을 추가했습니다.
quillbreaker

46
WHERE EXISTS(SELECT T1.Col1, T1.Col2 EXCEPT SELECT T2.Col1, T2.Col2))더 간결합니다.
Martin Smith

5
명령문에 where 절에이 두 가지가 포함되어서는 안됩니까? (other_table.col1이 null이고 table.col1이 null이 아님) 또는 (other_table.col2가 null이고 table.col2가 null이 아님)
Barka

4
대상의 널을 소스의 널로 바꾸려는지에 따라 다릅니다. 자주 그렇지 않습니다. 그러나 그렇게한다면 Martin의 where 절 구성이 가장 좋습니다.
quillbreaker

204

일방 통행

UPDATE t 
SET t.col1 = o.col1, 
    t.col2 = o.col2
FROM 
    other_table o 
  JOIN 
    t ON t.id = o.id
WHERE 
    o.sql = 'cool'

165

아직 언급되지 않은 또 다른 가능성은 SELECT명령문 자체를 CTE에 넣고 CTE를 업데이트하는 것입니다.

;WITH CTE
     AS (SELECT T1.Col1,
                T2.Col1 AS _Col1,
                T1.Col2,
                T2.Col2 AS _Col2
         FROM   T1
                JOIN T2
                  ON T1.id = T2.id
         /*Where clause added to exclude rows that are the same in both tables
           Handles NULL values correctly*/
         WHERE EXISTS(SELECT T1.Col1,
                             T1.Col2
                       EXCEPT
                       SELECT T2.Col1,
                              T2.Col2))
UPDATE CTE
SET    Col1 = _Col1,
       Col2 = _Col2

이것은 쉽게 실행할 수 있다는 이점이 있습니다. SELECT결과를 확인하기 위해 먼저 명령문을 자체적 있지만, 소스 및 목표 테이블에서 이름이 동일하면 컬럼을 별명으로 지정해야합니다.

이것은 또한 UPDATE ... FROM다른 답변 중 네 가지에 표시된 독점 구문 과 동일한 제한 사항이 있습니다 . 소스 테이블이 일대의 여러 측면에있는 경우는 가능한 한 일치의 레코드가 사용됩니다 합류하는 결정적 (undeterministic)입니다 다음에 가입 Update하는 (문제가 MERGE피할 수를 갱신하려는 시도가있을 경우 오류를 높여 같은 행을 두 번 이상).


3
이름의 의미가 CTE있습니까?
랩터

19
@ShivanRaptor- Common Table Expression 의 약어입니다 . 이 경우 임의의 별칭입니다.
Martin Smith

3
이것은 또한 여러 CTE와 잘 작동합니다.;WITH SomeCompexCTE AS (...), CTEAsAbove AS (SELECT T1.Col1,... FROM T1 JOIN SomeComplexCTE...) UPDATE CTEAsAbove SET Col1=_Col1, ...
VeeTheSecond

117

레코드 (및 내가 검색 한 다른 사람들)를 위해 MySQL에서 다음과 같이 할 수 있습니다.

UPDATE first_table, second_table
SET first_table.color = second_table.color
WHERE first_table.id = second_table.foreign_id

가장 간단합니까? 감사합니다 ...
MarcoZen

96

별명 사용 :

UPDATE t
   SET t.col1 = o.col1
  FROM table1 AS t
         INNER JOIN 
       table2 AS o 
         ON t.id = o.id

73

이를 수행하는 간단한 방법은 다음과 같습니다.

UPDATE
    table_to_update,
    table_info
SET
    table_to_update.col1 = table_info.col1,
    table_to_update.col2 = table_info.col2

WHERE
    table_to_update.ID = table_info.ID

2
당신은 더 나은 형식입니다; 또한 하위 선택을 사용할 때 다른 형식보다 더 안정적으로 작동합니다. 답변을 게시 해 주셔서 감사합니다.
벤 웨스트

20
이것은 SQl Server 구문이 아니며 SQL Server에서 작동하지 않습니다
HLGEM

이것은 SQL Alchemy에서 훌륭하게 작동했습니다. 어쩌면 질문이 아니라는 것이 확실하지만 그것은 나를 도왔습니다. :)
JGTaylor 2016 년

61

이는 업데이트를 수행해야하는 틈새 이유 (예 : 주로 프로 시저에서 사용됨)이거나 다른 사람에게는 분명 할 수 있지만 조인을 사용하지 않고 update-select 문을 수행 할 수 있다고 명시해야합니다 ( 사이에 업데이트하는 테이블에는 공통 필드가 없습니다).

update
    Table
set
    Table.example = a.value
from
    TableExample a
where
    Table.field = *key value* -- finds the row in Table 
    AND a.field = *key value* -- finds the row in TableExample a

59

또 다른 유용한 구문은 다음과 같습니다.

UPDATE suppliers
SET supplier_name = (SELECT customers.name
                     FROM customers
                     WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT customers.name
              FROM customers
              WHERE customers.customer_id = suppliers.supplier_id);

"WHERE EXIST"를 사용하여 널인지 여부를 확인합니다.


52

나는 이것을 추가하기 만하면 업데이트를 수행하기 전에 업데이트 될 내용을 확인할 수 있도록 빠른 작성 방법을 볼 수 있습니다.

UPDATE Table 
SET  Table.col1 = other_table.col1,
     Table.col2 = other_table.col2 
--select Table.col1, other_table.col,Table.col2,other_table.col2, *   
FROM     Table 
INNER JOIN     other_table 
    ON     Table.id = other_table.id 

52

SQL Server 대신 MySQL 을 사용하는 경우 구문은 다음과 같습니다.

UPDATE Table1
INNER JOIN Table2
ON Table1.id = Table2.id
SET Table1.col1 = Table2.col1,
    Table1.col2 = Table2.col2

50

SQL 데이터베이스에서 INNER JOIN을 사용하여 SELECT에서 업데이트

이 게시물에 대한 답변이 너무 많아서 가장 많이 투표되었으므로 여기에 의견을 제시 할 것이라고 생각했습니다. 질문이 매우 흥미롭지 만 많은 포럼 사이트에서 보았고 INNER JOIN을 사용하여 솔루션을 만들었습니다. 스크린 샷과 함께 을 .

처음에는 schoolold 라는 이름의 테이블을 만들었습니다. 을 만들고 열 이름과 관련하여 몇 가지 레코드를 삽입하고 실행했습니다.

그런 다음 SELECT 명령을 실행 하여 삽입 된 레코드를 봅니다.

그런 다음 schoolnew 라는 새 테이블을 만들고 위의 작업을 비슷하게 실행했습니다.

그런 다음 삽입 된 레코드를 보려면 SELECT 명령을 실행하십시오.

이제 여기에서 세 번째와 네 번째 행을 약간 변경 하여이 작업을 완료하기 위해 INNER JOIN으로 UPDATE 명령을 실행 합니다.

변경 사항을 보려면 SELECT 명령을 실행하십시오 .

INNER JOIN with UPDATE 문을 사용하여 테이블 스쿨 의 세 번째 및 네 번째 레코드가 테이블 스쿨 테이블 쉽게 대체 된 방법을 확인할 수 있습니다 .


43

그리고 테이블 자체를 조인하려면 (너무 자주 발생하지는 않음) :

update t1                    -- just reference table alias here
set t1.somevalue = t2.somevalue
from table1 t1               -- these rows will be the targets
inner join table1 t2         -- these rows will be used as source
on ..................        -- the join clause is whatever suits you

8
+1하지만 당신은 관련 별명처럼 사용할해야 targett1하고 sourcet1보다는 (또는뿐만 아니라) 주석을.
Mark Hurd

42

다음 예제는 FROM 절 뒤에 나오는 SELECT 문인 파생 테이블을 사용하여 추가 업데이트를 위해 이전 값과 새 값을 반환합니다.

UPDATE x
SET    x.col1 = x.newCol1,
       x.col2 = x.newCol2
FROM   (SELECT t.col1,
               t2.col1 AS newCol1,
               t.col2,
               t2.col2 AS newCol2
        FROM   [table] t
               JOIN other_table t2
                 ON t.ID = t2.ID) x

41

업데이트 CTE는 여기의 다른 답변보다 읽기 쉽습니다.

;WITH cte
     AS (SELECT col1,col2,id
         FROM   other_table
         WHERE  sql = 'cool')
UPDATE A
SET    A.col1 = B.col1,
       A.col2 = B.col2
FROM   table A
       INNER JOIN cte B
               ON A.id = B.id

39

SQL Server를 사용하는 경우 조인을 지정하지 않고 한 테이블을 다른 테이블에서 업데이트하고 where절 에서 두 테이블을 간단히 연결할 수 있습니다. 이것은 훨씬 간단한 SQL 쿼리를 만듭니다.

UPDATE Table1
SET Table1.col1 = Table2.col1,
    Table1.col2 = Table2.col2
FROM
    Table2
WHERE
    Table1.id = Table2.id

25

모든 다른 접근 방식을 통합합니다.

  1. 업데이트 선택
  2. 공통 테이블 표현식으로 업데이트
  3. 병합

샘플 테이블 구조는 다음과 같으며 Product_BAK에서 ​​Product 테이블로 업데이트됩니다.

생성물

CREATE TABLE [dbo].[Product](
    [Id] [int] IDENTITY(1, 1) NOT NULL,
    [Name] [nvarchar](100) NOT NULL,
    [Description] [nvarchar](100) NULL
) ON [PRIMARY]

제품 _BAK

    CREATE TABLE [dbo].[Product_BAK](
        [Id] [int] IDENTITY(1, 1) NOT NULL,
        [Name] [nvarchar](100) NOT NULL,
        [Description] [nvarchar](100) NULL
    ) ON [PRIMARY]

1. 업데이트 선택

    update P1
    set Name = P2.Name
    from Product P1
    inner join Product_Bak P2 on p1.id = P2.id
    where p1.id = 2

2. 공통 테이블 표현식으로 업데이트

    ; With CTE as
    (
        select id, name from Product_Bak where id = 2
    )
    update P
    set Name = P2.name
    from  product P  inner join CTE P2 on P.id = P2.id
    where P2.id = 2

3. 병합

    Merge into product P1
    using Product_Bak P2 on P1.id = P2.id

    when matched then
    update set p1.[description] = p2.[description], p1.name = P2.Name;

이 Merge 문에서 대상에서 일치하는 레코드를 찾지 못하더라도 소스에 존재하고 구문을 찾으면 삽입 할 수 있습니다.

    Merge into product P1
    using Product_Bak P2 on P1.id = P2.id;

    when matched then
    update set p1.[description] = p2.[description], p1.name = P2.Name;

    WHEN NOT MATCHED THEN
    insert (name, description)
    values(p2.name, P2.description);

23

다른 방법은 파생 테이블을 사용하는 것입니다.

UPDATE t
SET t.col1 = a.col1
    ,t.col2 = a.col2
FROM (
SELECT id, col1, col2 FROM @tbl2) a
INNER JOIN @tbl1 t ON t.id = a.id

샘플 데이터

DECLARE @tbl1 TABLE (id INT, col1 VARCHAR(10), col2 VARCHAR(10))
DECLARE @tbl2 TABLE (id INT, col1 VARCHAR(10), col2 VARCHAR(10))

INSERT @tbl1 SELECT 1, 'a', 'b' UNION SELECT 2, 'b', 'c'

INSERT @tbl2 SELECT 1, '1', '2' UNION SELECT 2, '3', '4'

UPDATE t
SET t.col1 = a.col1
    ,t.col2 = a.col2
FROM (
SELECT id, col1, col2 FROM @tbl2) a
INNER JOIN @tbl1 t ON t.id = a.id

SELECT * FROM @tbl1
SELECT * FROM @tbl2

23
UPDATE TQ
SET TQ.IsProcessed = 1, TQ.TextName = 'bla bla bla'
FROM TableQueue TQ
INNER JOIN TableComment TC ON TC.ID = TQ.TCID
WHERE TQ.IsProcessed = 0

원하는 것을 업데이트하려면 먼저 선택하십시오

SELECT TQ.IsProcessed, 1 AS NewValue1, TQ.TextName, 'bla bla bla' AS NewValue2
FROM TableQueue TQ
INNER JOIN TableComment TC ON TC.ID = TQ.TCID
WHERE TQ.IsProcessed = 0

22

이 심지어입니다 짧은 방법 및 당신을 위해 놀라운 일이 될 수 있습니다

샘플 데이터 세트 :

CREATE TABLE #SOURCE ([ID] INT, [Desc] VARCHAR(10));
CREATE TABLE #DEST   ([ID] INT, [Desc] VARCHAR(10));

INSERT INTO #SOURCE VALUES(1,'Desc_1'), (2, 'Desc_2'), (3, 'Desc_3');
INSERT INTO #DEST   VALUES(1,'Desc_4'), (2, 'Desc_5'), (3, 'Desc_6');

암호:

UPDATE #DEST
SET #DEST.[Desc] = #SOURCE.[Desc]
FROM #SOURCE
WHERE #DEST.[ID] = #SOURCE.[ID];

1
YES-의도적으로 JOIN이 없으며 NO-테이블 변수에 적용 할 수 없습니다.
Bartosz X

1
#DESTINATION과 (와) 동일한 [ID]가 아닌 #SOURCE에서 [_id]를 사용하면 가입하도록 할 수 있습니다. "on # DESTINATION.ID = # SOURCE._id. 또는 @tbl과 같은 테이블 변수,"on PermTable.ID=@memorytbl._id "를 사용하십시오. 시도해 보셨습니까? 전화로 답장을 보내려고하는데 컴퓨터가 없습니다. .
제나 잎

2
이것은 SELECT에서 업데이트하는 것과 어떤 관련이 있습니까?
Martin Smith

2
이것은 같은 아이디어이지만 또 다른 방법입니다-업데이트 문에서 JOIN과 WHERE를 달성하기 위해 "select"를 전혀 넣지 않아도됩니다. SELECT를 작성하지 않고도 SELECT 유형의 쿼리입니다.
Bartosz X

19

사용하다:

drop table uno
drop table dos

create table uno
(
    uid int,
    col1 char(1),
    col2 char(2)
)
create table dos
(
    did int,
    col1 char(1),
    col2 char(2),
    [sql] char(4)
)
insert into uno(uid) values (1)
insert into uno(uid) values (2)
insert into dos values (1,'a','b',null)
insert into dos values (2,'c','d','cool')

select * from uno 
select * from dos

어느 한 쪽:

update uno set col1 = (select col1 from dos where uid = did and [sql]='cool'), 
col2 = (select col2 from dos where uid = did and [sql]='cool')

또는:

update uno set col1=d.col1,col2=d.col2 from uno 
inner join dos d on uid=did where [sql]='cool'

select * from uno 
select * from dos

ID 열 이름이 두 테이블에서 동일하면 업데이트 할 테이블 앞에 테이블 이름을 넣고 선택한 테이블의 별명을 사용하십시오.

update uno set col1 = (select col1 from dos d where uno.[id] = d.[id] and [sql]='cool'),
col2  = (select col2 from dos d where uno.[id] = d.[id] and [sql]='cool')

14

허용 된 답변에서 다음을 수행하십시오.

SET
Table_A.col1 = Table_B.col1,
Table_A.col2 = Table_B.col2

나는 추가 할 것이다 :

OUTPUT deleted.*, inserted.*

내가 일반적으로하는 일은 롤백 트랜잭션에 "OUTPUT"모든 것을 넣고이 방법을 사용하여 발생하는 모든 것을 볼 수 있습니다. 내가 무엇을보고 행복 해요 때, 나는 변경 ROLLBACKCOMMIT .

일반적으로 수행 한 작업을 문서화해야하므로 "results to Text"롤백 쿼리를 실행할 때 옵션을 사용 하고 스크립트와 OUTPUT 결과를 모두 저장합니다. (물론 너무 많은 행을 변경하면 실용적이지 않습니다)



12

아래 솔루션은 MySQL 데이터베이스에서 작동합니다.

UPDATE table1 a , table2 b 
SET a.columname = 'some value' 
WHERE b.columnname IS NULL ;

12

select 문에서 업데이트하는 다른 방법 :

UPDATE A
SET A.col = A.col,B.col1 = B.col1
FROM  first_Table AS A
INNER JOIN second_Table AS B  ON A.id = B.id WHERE A.col2 = 'cool'

5
select 문에서 업데이트하는 다른 방법 다른 답변과의 차이점은 무엇입니까? 답을 정교하게 작성하십시오. 명심하십시오 : 좋은 답변 에는 항상 수행 된 작업과 그 이유가 OP뿐 아니라 향후 SO 방문자를위한 방식으로 설명됩니다.
B001 ᛦ

이 답변은 코드에 대한 설명을 제공하지 않기 때문에 품질이 낮은 검토 대기열에 나타납니다. 이 코드가 질문에 대한 답변이면 코드를 설명하는 텍스트를 추가하여 추가하십시오. 이렇게하면 더 많은 투표를 할 가능성이 높아지고 질문자가 새로운 것을 배우도록 도울 수 있습니다.
lmo

8

옵션 1 : 내부 결합 사용 :

UPDATE
    A
SET
    A.col1 = B.col1,
    A.col2 = B.col2
FROM
    Some_Table AS A
    INNER JOIN Other_Table AS B
        ON A.id = B.id
WHERE
    A.col3 = 'cool'

옵션 2 : 공동 관련 하위 쿼리

UPDATE table 
SET Col1 = B.Col1, 
    Col2 = B.Col2 
FROM (
    SELECT ID, Col1, Col2 
    FROM other_table) B
WHERE 
    B.ID = table.ID

그것은 당신을 위해 일했습니까? 정확히 동일한 쿼리를 사용했지만 내부 조인을 사용할 때 오류가 발생했습니다. 별칭이 해결되지 않았습니다. 그러나 관련 하위 쿼리는 완벽하게 작동했습니다.
Pratyush Raizada

@PratyushRaizada 어떤 오류가 발생 했습니까?
Santhana

정확한 오류 로그가 없지만 할당 전에 별칭 A가 참조되어 오류가 발생했습니다.
Pratyush Raizada

상관 하위 쿼리를 사용했습니다
pat capozzi

3
UPDATE table1
SET column1 = (SELECT expression1
               FROM table2
               WHERE conditions)
[WHERE conditions];

SQL Server에서 다른 테이블의 데이터로 한 테이블을 업데이트 할 때 UPDATE 문의 구문


1

SQL Server에서 업데이트를 위해 이것을 사용할 수 있습니다

UPDATE
    T1
SET
   T1.col1 = T2.col1,
   T1.col2 = T2.col2
FROM
   Table1 AS T1
INNER JOIN Table2 AS T2
    ON T1.id = T2.id
WHERE
    T1.col3 = 'cool'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.