[SQL] 어떻게 INNER은 SQL Server에 가입하여 삭제하는 방법?
SQL어떻게 INNER은 SQL Server에 가입하여 삭제하는 방법?
나는 INNER은 SQL Server 2008의 가입 사용하여 삭제합니다.
그러나 나는이 오류가 발생합니다 :
내 코드 :
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
해결법
-
==============================
1.여기 별명을 가진 버전, 당신은에서 삭제하는 것을 테이블에 지정해야합니다 :
여기 별명을 가진 버전, 당신은에서 삭제하는 것을 테이블에 지정해야합니다 :
DELETE w FROM WorkRecord2 w INNER JOIN Employee e ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06'
-
==============================
2.우리가 삭제할 수있는 테이블을 지정하기 때문에 그냥 당신이 기록을 삭제할 곳에서 DELETE 사이에서 테이블의 이름을 추가합니다. 순서에 아무것도 기록을 삭제하는 동안이 없기 때문에 또한 ORDER BY 절을 제거합니다.
우리가 삭제할 수있는 테이블을 지정하기 때문에 그냥 당신이 기록을 삭제할 곳에서 DELETE 사이에서 테이블의 이름을 추가합니다. 순서에 아무것도 기록을 삭제하는 동안이 없기 때문에 또한 ORDER BY 절을 제거합니다.
그래서 최종 쿼리는 다음과 같이해야합니다 :
DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06';
-
==============================
3.가능한이 당신을 위해 도움이 될 수 -
가능한이 당신을 위해 도움이 될 수 -
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 .... )
-
==============================
4.이 시도:
이 시도:
DELETE FROM WorkRecord2 FROM Employee Where EmployeeRun=EmployeeNo And Company = '1' AND Date = '2013-05-06'
-
==============================
5.그것은해야한다:
그것은해야한다:
DELETE zpost FROM zpost INNER JOIN zcomment ON (zpost.zpostid = zcomment.zpostid) WHERE zcomment.icomment = "first"
-
==============================
6.이 버전해야는 작품
이 버전해야는 작품
DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo Where Company = '1' AND Date = '2013-05-06'
-
==============================
7.SQL Server 관리 Studio에서 나는 쉽게 SELECT 쿼리를 생성 할 수 있습니다.
SQL Server 관리 Studio에서 나는 쉽게 SELECT 쿼리를 생성 할 수 있습니다.
SELECT Contact.Naam_Contactpersoon, Bedrijf.BedrijfsNaam, Bedrijf.Adres, Bedrijf.Postcode FROM Contact INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf
나는 그것을 실행할 수 있습니다, 내 모든 연락처가 표시됩니다.
이제 삭제하려면 SELECT 변경 :
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
-
==============================
8.
DELETE a FROM WorkRecord2 a INNER JOIN Employee b ON a.EmployeeRun = b.EmployeeNo Where a.Company = '1' AND a.Date = '2013-05-06'
-
==============================
9.이 쿼리 검색 :
이 쿼리 검색 :
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';
-
==============================
10.CTE를 사용하는 또 다른 방법.
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
참고 : 우리는 삭제할 때 CTE 내부에 가입 할 수 없습니다.
-
==============================
11.이 시도, 그것은 도움이 될 수 있습니다
이 시도, 그것은 도움이 될 수 있습니다
DELETE WorkRecord2 FROM WorkRecord2 INNER JOIN Employee ON EmployeeRun=EmployeeNo WHERE Company = '1' AND Date = '2013-05-06';
-
==============================
12.이것은 한 번에 두 개의 테이블에서 레코드를 삭제하는 간단한 쿼리입니다.
이것은 한 번에 두 개의 테이블에서 레코드를 삭제하는 간단한 쿼리입니다.
DELETE table1.* , table2.* FROM table1 INNER JOIN table2 ON table1.id= table2.id where table1.id ='given_id'
-
==============================
13.여기 내 SQL Server 버전입니다
여기 내 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)
-
==============================
14.당신은 회사와 날짜 테이블을 지정하지 않으면, 당신은 그 문제를 해결 할 수 있습니다.
당신은 회사와 날짜 테이블을 지정하지 않으면, 당신은 그 문제를 해결 할 수 있습니다.
표준 SQL MERGE를 사용하여 :
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 즉 반드시 읽고 코드를 유지하는 사람에 대해 상관하지 않는 코드를 작성하는 사람.
-
==============================
15.저는 여기에 현재 삭제하거나, 업데이트를 위해 무엇을 사용 :
저는 여기에 현재 삭제하거나, 업데이트를 위해 무엇을 사용 :
DELETE w FROM WorkRecord2 w, Employee e WHERE w.EmployeeRun = e.EmployeeNo AND w.Company = '1' AND w.Date = '2013-05-06'
from https://stackoverflow.com/questions/16481379/how-to-delete-using-inner-join-with-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 나는 작은 따옴표와 주변 사용자 입력을 단일 따옴표를 이스케이프 SQL 주입에 대해 보호 할 수 있습니까? (0) | 2020.03.14 |
---|---|
[SQL] 은 IN 값 목록 BY ORDER (0) | 2020.03.14 |
[SQL] SQL Server의 기존 테이블에 기본 값으로 열을 추가 (0) | 2020.03.14 |
[SQL] PostgreSQL을의 경우 절에 별칭 컬럼을 사용하여 (0) | 2020.03.14 |
[SQL] 1052 : 필드 목록에서 열 'ID는'모호 (0) | 2020.03.14 |