etc./StackOverFlow

SQL Server에서 INNER JOIN을 사용하여 어떻게 삭제할 수 있습니까?

청렴결백한 만능 재주꾼 2022. 2. 24. 22:02
반응형

질문자 :nettoon493


SQL Server 2008 에서 INNER JOIN 을 사용하여 삭제하고 싶습니다.

그러나이 오류가 발생합니다.

메시지 156, 수준 15, 상태 1, 줄 15
키워드 'INNER' 근처에 잘못된 구문이 있습니다.

내 코드:

 DELETE FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'


삭제할 테이블을 지정해야 합니다. 다음은 별칭이 있는 버전입니다.

 DELETE w FROM WorkRecord2 w INNER JOIN Employee e ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'

Taryn

삭제할 테이블을 지정해야 하므로 레코드를 삭제하려는 위치에서 DELETEFROM 사이에 테이블 이름을 추가하기만 하면 됩니다. 레코드를 삭제하는 동안 순서를 ORDER BY 절도 제거하십시오.

따라서 최종 쿼리는 다음과 같아야 합니다.

 DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06';

Himanshu Jansari

이것은 당신에게 도움이 될 것입니다 -

 DELETE FROM dbo.WorkRecord2 WHERE EmployeeRun IN ( SELECT e.EmployeeNo FROM dbo.Employee e WHERE ... )

또는 이것을 시도하십시오 -

 DELETE FROM dbo.WorkRecord2 WHERE EXISTS( SELECT 1 FROM dbo.Employee e WHERE EmployeeRun = e.EmployeeNo AND .... )

Devart

이 시도:

 DELETE FROM WorkRecord2 FROM Employee Where EmployeeRun=EmployeeNo And Company = '1' AND Date = '2013-05-06'

Behrouz Bakhtiari

그것은해야한다:

 DELETE zpost FROM zpost INNER JOIN zcomment ON (zpost.zpostid = zcomment.zpostid) WHERE zcomment.icomment = "first"

yoginder bagga

SQL Server Management Studio SELECT 쿼리를 쉽게 만들 수 있습니다.

 SELECT Contact.Naam_Contactpersoon, Bedrijf.BedrijfsNaam, Bedrijf.Adres, Bedrijf.Postcode FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf

실행할 수 있으며 모든 연락처가 표시됩니다.

SELECTDELETE 변경하십시오.

 DELETE Contact FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf

SELECT 문에서 본 모든 레코드가 제거됩니다.

동일한 절차로 더 어려운 내부 조인을 만들 수도 있습니다. 예를 들면 다음과 같습니다.

 DELETE FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf INNER JOIN LoginBedrijf ON Bedrijf.IDLoginBedrijf = LoginBedrijf.IDLoginBedrijf

frans eilering

이 버전이 작동해야 합니다.

 DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo Where Company = '1' AND Date = '2013-05-06'

AustinTX

 DELETE a FROM WorkRecord2 a INNER JOIN Employee b ON a.EmployeeRun = b.EmployeeNo Where a.Company = '1' AND a.Date = '2013-05-06'

Dhanraj Mittal

다음 쿼리를 시도해 보세요.

 DELETE WorkRecord2, Employee FROM WorkRecord2 INNER JOIN Employee ON (tbl_name.EmployeeRun=tbl_name.EmployeeNo) WHERE tbl_name.Company = '1' AND tbl_name.Date = '2013-05-06';

Ali

또 다른 방법은 CTE 사용하는 것입니다.

 ;WITH cte AS (SELECT * FROM workrecord2 w WHERE EXISTS (SELECT 1 FROM employee e WHERE employeerun = employeeno AND company = '1' AND date = '2013-05-06')) DELETE FROM cte

참고: delete 하려는 경우 CTE 내에서 JOIN 사용할 수 없습니다.


Pரதீப்

다음은 현재 삭제하거나 업데이트하는 데 사용하는 것입니다.

 DELETE w FROM WorkRecord2 w, Employee e WHERE w.EmployeeRun = e.EmployeeNo AND w.Company = '1' AND w.Date = '2013-05-06'

PPJN

CompanyDate 대한 테이블을 지정하지 않고 수정하고 싶을 수 있습니다.

MERGE 사용하는 표준 SQL:

 MERGE WorkRecord2 T USING Employee S ON T.EmployeeRun = S.EmployeeNo AND Company = '1' AND Date = '2013-05-06' WHEN MATCHED THEN DELETE;

Devart의 답변은 불완전하지만 표준 SQL이기도 합니다. 다음과 같이 보일 것입니다.

 DELETE FROM WorkRecord2 WHERE EXISTS ( SELECT * FROM Employee S WHERE S.EmployeeNo = WorkRecord2.EmployeeRun AND Company = '1' AND Date = '2013-05-06' );

위의 내용에서 주목해야 할 중요한 점은 두 번째 예에서 스칼라 하위 쿼리를 요구하여 시행된 것처럼 삭제가 단일 테이블을 대상으로 한다는 것이 분명하다는 것입니다.

저에게 다양한 독점 구문 답변은 읽고 이해하기가 더 어렵습니다. 에 대한 사고 방식은 frans eilering의 답변에 가장 잘 설명되어 있다고 생각합니다. 즉, 코드를 작성하는 사람은 코드를 읽고 유지 관리할 사람에 대해 반드시 신경 쓰지 않습니다.


onedaywhen

한 번에 두 개의 테이블에서 레코드를 삭제하는 간단한 쿼리입니다.

 DELETE table1.* , table2.* FROM table1 INNER JOIN table2 ON table1.id= table2.id where table1.id ='given_id'

Ady

여기 내 SQL Server 버전이 있습니다.

 DECLARE @ProfileId table(Id bigint) DELETE FROM AspNetUsers OUTPUT deleted.ProfileId INTO @ProfileId WHERE Email = @email DELETE FROM UserProfiles WHERE Id = (Select Id FROM @ProfileId)

Andrew

하위 쿼리를 수행할 수도 있습니다. 아래 코드처럼:

 DELETE FROM users WHERE id IN( SELECT user_id FROM Employee WHERE Company = '1' AND Date = '2013-05-06' )

Rafael Xavier

출처 : http:www.stackoverflow.com/questions/16481379/how-can-i-delete-using-inner-join-with-sql-server

반응형