반응형
즉시 인라인 SQL 테이블 생성(왼쪽 조인 제외용)
다음과 같이 가정합니다.
표 A
id | value
----------
1 | red
2 | orange
5 | yellow
10 | green
11 | blue
12 | indigo
20 | violet
아이디 리스트가 있어요).10, 11, 12, 13, 14
를 사용하여 이 테이블에서 ID를 검색할 수 있습니다.이 ID 목록은 내 프런트엔드에서 생성됩니다.
순수한 SQL을 사용하여 이 목록에서 ID를 선택해야 합니다.10, 11, 12, 13, 14
표 A에 엔트리가 없는 ('id' 열에 결합)결과는 ID의 결과 집합이어야 합니다.13
그리고.14
.
SQL만 사용하여 이 작업을 수행하려면 어떻게 해야 합니까? (또한 가능하면 스토어드 프로시저를 사용하지 않도록 하겠습니다.)
제가 생각할 수 있는 유일한 방법은 즉시 인라인 SQL 테이블을 생성하여 일시적으로 ID 목록을 유지하는 것입니다.하지만 어떻게 해야 할지 모르겠어요.이게 가능합니까?더 좋은 방법이 있을까요?
감사합니다! :)
이 작업은 SQL Server 2008 이상에서 테이블 값 생성자를 사용하여 수행할 수 있습니다.
SELECT * FROM (
VALUES(1, 'red'),
(2, 'orange'),
(5, 'yellow'),
(10, 'green'),
(11, 'blue'),
(12, 'indigo'),
(20, 'violet'))
AS Colors(Id, Value)
다음 서브쿼리를 사용하여 "인라인 테이블"을 작성할 수 있습니다.
(
SELECT 10 AS id
UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14
-- etc.
) AS inline_table
CREATE TEMPORARY TABLE ids (id INT NOT NULL PRIMARY KEY);
INSERT
INTO ids
VALUES
(10),
(11),
(12),
(13),
(14);
SELECT *
FROM ids
WHERE id NOT IN
(
SELECT id
FROM a
);
이런 것도 잘 될 거야
SELECT * FROM (
SELECT 'ds' AS source
UNION ALL
SELECT 'cache' AS source
) as dataSource
----------
| source |
----------
| ds |
----------
| cache |
----------
create table B (id int)
insert into B values (10),(11),(12),(13),(14)
select *
from B
left join A
on A.id=B.id
where A.id is null
drop table B
http://sqlfiddle.com/ #!6/666c1/30
언급URL : https://stackoverflow.com/questions/10709464/create-an-inline-sql-table-on-the-fly-for-an-excluding-left-join
반응형
'itsource' 카테고리의 다른 글
Java에서 Double Brace 초기화란 무엇입니까? (0) | 2022.09.29 |
---|---|
mariadb 사용자에게 권한을 부여하려고 할 때 테이블 오류에서 일치하는 행을 찾을 수 없습니다. (0) | 2022.09.29 |
bootstrap-vue 모달 본문과 바닥글에 콘텐츠를 프로그래밍 방식으로 주입하려면 어떻게 해야 합니까? (0) | 2022.09.29 |
케이스 스테이트먼트가 연속적으로 필요한 이유는 무엇입니까? (0) | 2022.09.29 |
SELECT 속도를 높이는 방법..MySQL의 LIKE 쿼리가 여러 열에 있습니까? (0) | 2022.09.29 |