UNION [ALL]에서 SELECT INTO 조항을 사용할 수 있습니까?
SQL Server에서는 [Customers]테이블에서 tmpFerdeen :- 에 100개의 레코드가 삽입됩니다.
SELECT top(100)*
INTO tmpFerdeen
FROM Customers
UNION ALL SELECT를 통해 SELECT INTO를 수행할 수 있습니까:-
SELECT top(100)*
FROM Customers
UNION All
SELECT top(100)*
FROM CustomerEurope
UNION All
SELECT top(100)*
FROM CustomerAsia
UNION All
SELECT top(100)*
FROM CustomerAmericas
INTO 절을 추가할 위치를 잘 모르겠습니다.
이는 SQL Server에서 작동합니다.
SELECT * INTO tmpFerdeen FROM (
SELECT top 100 *
FROM Customers
UNION All
SELECT top 100 *
FROM CustomerEurope
UNION All
SELECT top 100 *
FROM CustomerAsia
UNION All
SELECT top 100 *
FROM CustomerAmericas
) as tmp
여기에는 파생 테이블이 전혀 필요하지 않습니다.
그냥 넣어주세요INTO첫 번째 이후SELECT
SELECT top(100)*
INTO tmpFerdeen
FROM Customers
UNION All
SELECT top(100)*
FROM CustomerEurope
UNION All
SELECT top(100)*
FROM CustomerAsia
UNION All
SELECT top(100)*
FROM CustomerAmericas
SELECT * INTO tmpFerdeen FROM
(SELECT top(100)*
FROM Customers
UNION All
SELECT top(100)*
FROM CustomerEurope
UNION All
SELECT top(100)*
FROM CustomerAsia
UNION All
SELECT top(100)*
FROM CustomerAmericas) AS Blablabal
이 "Blablabal"은 필수입니다.
MS Access 쿼리의 경우 이는 다음과 같이 동작했습니다.
SELECT * INTO tmpFerdeen FROM(
SELECT top(100) *
FROM Customers
UNION All
SELECT top(100) *
FROM CustomerEurope
UNION All
SELECT top(100) *
FROM CustomerAsia
UNION All
SELECT top(100) *
FROM CustomerAmericas
)
MS Access에서는 동작하지 않았습니다.
SELECT top(100) *
INTO tmpFerdeen
FROM Customers
UNION All
SELECT top(100) *
FROM CustomerEurope
UNION All
SELECT top(100) *
FROM CustomerAsia
UNION All
SELECT top(100) *
FROM CustomerAmericas
저는 이렇게 하고 싶어요.
SELECT top(100)* into #tmpFerdeen
FROM Customers
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerEurope
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAsia
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAmericas
솔루션과 관련된 당면 과제:
FROM(
SELECT top(100) *
FROM Customers
UNION
SELECT top(100) *
FROM CustomerEurope
UNION
SELECT top(100) *
FROM CustomerAsia
UNION
SELECT top(100) *
FROM CustomerAmericas
)
이는 RAM에 상주하는 윈도우 데이터 세트가 생성된다는 것입니다.이 솔루션에서는 먼저 파티션을 작성한 후 파티션을 사용하여 임시 테이블에 써야 하기 때문에 심각한 성능 문제가 발생합니다.
보다 나은 솔루션은 다음과 같습니다.
SELECT top(100)* into #tmpFerdeen
FROM Customers
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerEurope
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAsia
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAmericas
임시 테이블에 삽입을 선택한 다음 행을 추가합니다.단, 데이터 내에 중복된 행이 있는 경우는 여기서 참조할 수 있습니다.
최적의 솔루션은 다음과 같습니다.
Insert into #tmpFerdeen
SELECT top(100)*
FROM Customers
UNION
SELECT top(100)*
FROM CustomerEurope
UNION
SELECT top(100)*
FROM CustomerAsia
UNION
SELECT top(100)*
FROM CustomerAmericas
이 방법은 별도의 행을 필요로 하는 모든 목적에 대해 작동해야 합니다.그러나 중복 행을 UNION과 UNION ALL로 바꾸려면
행운을 빌어요!
이거 먹어볼래?
SELECT * INTO tmpFerdeen (
SELECT top(100)*
FROM Customers
UNION All
SELECT top(100)*
FROM CustomerEurope
UNION All
SELECT top(100)*
FROM CustomerAsia
UNION All
SELECT top(100)*
FROM CustomerAmericas)
다음과 같은 방법을 사용해 보십시오.최종 객체 테이블 tmpFerdeen을 유니언 구조로 만듭니다.
그리고나서
INSERT INTO tmpFerdeen (
SELECT top(100)*
FROM Customers
UNION All
SELECT top(100)*
FROM CustomerEurope
UNION All
SELECT top(100)*
FROM CustomerAsia
UNION All
SELECT top(100)*
FROM CustomerAmericas
)
언급URL : https://stackoverflow.com/questions/591382/is-it-possible-to-use-the-select-into-clause-with-union-all
'programing' 카테고리의 다른 글
| VBA: 조건부 - 아무것도 아니다 (0) | 2023.04.12 |
|---|---|
| EF Code First의 계산된 열 (0) | 2023.04.12 |
| Dapper를 사용하여 삽입된 ID를 반환하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
| 열 변경, 기본 제약 조건 추가 (0) | 2023.04.07 |
| LIKE 필터에 밑줄 문자를 사용하면 모든 결과가 나타나는 이유는 무엇입니까? (0) | 2023.04.07 |