, SQL Server 의 it& # 39 의 'a' 선택 '수' 를 사용하여 테이블을 삽입하십시오 기술서임을:
INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM other_table
WHERE sql = 'cool'
이 또한 '수' 를 통해 update? I have a 와 같은 다른 해당 값을 사용하여 테이블을 업데이트하려면 임시 테이블 값을 포함하는 것이다. 아마도 이 같은 일이.
UPDATE Table SET col1, col2
SELECT col1, col2
FROM other_table
WHERE sql = 'cool'
WHERE Table.id = other_table.id
Sql Server 2008년 (또는 그 이상) 을 사용하여 ['병합'] (http://technet.microsoft.com/en-us/library/bb510625.aspx)
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;
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
)
[1]: # 2334741 https://stackoverflow.com/questions/2334712/how-do-i-update-from-a-select-in-sql-server/2334741
아직 스스로 선택할 수 있는 '척' 또다른 가능성을 언급하지 않고 그냥 기술서임을 붙여넣습니다 스테 그리곤요 업데이트하십시오 스테.
;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
여기에는 급여금 용이한 것도 '정신' 을 통해 처음으로 확인 결과 실행하십시오 자체적으로 열을 앨리어스가 않지만, 위와 같은 경우 합니다 release. 소스 및 대상 표.
이 역시 같은 제한은라이센스 독점 '로 업데이트. 4) 에서 '구문을 다른 분입니다. 많은 경우 소스 테이블 켜있을 측면에 있는 일대다 참가하십시오 운터르미니스틱 참여됨 레코드가 일치하는 것은 가능한 다음 업데이트 때 '' (불가능한 문제에 대해 '병합' 하면 높여 같은 오류가 있으면 업데이트하려면 행일 시도가 여러 번).
틈새 업데이트를 수행할 이유가 될 수 있습니다 (예를 들어, 주로 사용되는 절차), 또는 다른 사람에게 할 수 있어야 한다고 하지만 명백하네 사용하지 않고 기술서임을 참가하십시오 업데이트 선택 수행할 수 있습니다 (대비해 you& # 39 표, re 업데이팅이 없는 사이에 일반적인 기입란).
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
여기 다른 유용한 문법:
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);
이 경우, 여기서 EXIST" " 널임 방관하겠나 검사를 통해;.
내가 이 문제는 빠르게 볼 수 있도록 추가 쓸 수 있도록 업데이트 하기 전에 확인하는 업데이트될 예정입니다.
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
너무 많은 응답을 있기 때문에 이 포스트의 최대 투표 있는 줄 알았는데, 여기서도 제일 심하게 내 제안에 제공할 것이라고 밝혔다. 하지만 문제는 매우 흥미로운, 나는 볼 수 있는 솔루션을 함께 사용하여, 브라운아저씨의 많은 포럼 사이트 내부 조인을 스크린샷.
처음엔, 그냥 hotenough. 스쿨로두 및 삽입됨 레코드전자문서를 존중하십시오 그들의 열 몇 표 라는 이름과 autoexec. 거잖나.
그럼 내가 수행되 일부 명령을 보기입니다 삽입됨 레코드는유지합니다.
그럼 내가 만든 테이블 위에 쇼올뉴 로 명명된 새로운 작업 및 partnernet 실행됨을 때문이다.
그런 다음 뷰 삽입됨 레코드는유지합니다 항목이없습니다, 내가 autoexec. 명령을 선택합니다.
여기서 일부 변화가 만들고 싶은 세 번째와 네 번째 행, 이 작업은, 내가 autoexec. 완료하십시오 업데이트하십시오 명령과 함께 내부 조인을.
세 번째와 네 번째 기록을 통해 쉽게 확인할 수 있습니다 쇼올뉴 테이블 스쿨로두 재장착하여 사용하여 테이블을 INNER JOIN 업데이트와 함께 발표했다.
다음 예제는 파생됨 표, SELECT, from 절 이후 기술서임을 반환되기를 기존 및 신규 값뿐 자세한 업데이트:
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
만일 당신이 원하는 테이블에 참여할 수 있는 자체 (너무 자주 일어날 수 있는 won& # 39, t):
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
Sql Server 업데이트할 수 있는 한 테이블을 사용하는 경우 단순히 다른 2 명은 '연결' 참가하십시오 지정하지 않고 있는 것이다. 따라서 훨씬 간단해진다는 SQL 쿼리:
UPDATE Table1
SET Table1.col1 = Table2.col1,
Table1.col2 = Table2.col2
FROM
Table2
WHERE
Table1.id = Table2.id
다른 방법은 table: 파생됨 사용합니다.
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
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