[SQL] 절에 SQL에 튜플을 사용하여
SQL절에 SQL에 튜플을 사용하여
이 같은 데이터베이스 감안할 때 :
BEGIN TRANSACTION;
CREATE TABLE aTable (
a STRING,
b STRING);
INSERT INTO aTable VALUES('one','two');
INSERT INTO aTable VALUES('one','three');
CREATE TABLE anotherTable (
a STRING,
b STRING);
INSERT INTO anotherTable VALUES('one','three');
INSERT INTO anotherTable VALUES('two','three');
COMMIT;
나는의 라인을 따라 뭔가를하고 싶습니다
SELECT a,b FROM aTable
WHERE (aTable.a,aTable.b) IN
(SELECT anotherTable.a,anotherTable.b FROM anotherTable);
'하나' '세'를 답을 얻으려면,하지만 난 "근처"지고있어, "구문 오류"
이 SQL의 맛에 수 있습니까? (I SQLite는을 사용하고 있습니다)
나는 총 개념 오류를 만드는 건가요? 또는 무엇을?
해결법
-
==============================
1.당신은 PostgreSQL을 또는 Oracle에서 할 경우 코드가 작동합니다. MS SQL에서,이 지원되지 않습니다
당신은 PostgreSQL을 또는 Oracle에서 할 경우 코드가 작동합니다. MS SQL에서,이 지원되지 않습니다
이것을 사용 :
SELECT a,b FROM aTable WHERE -- (aTable.a,aTable.b) IN -- leave this commented, it makes the intent more clear EXISTS ( SELECT anotherTable.a,anotherTable.b -- do not remove this too, perfectly fine for self-documenting code, i.e.. tuple presence testing FROM anotherTable WHERE anotherTable.a = aTable.a AND anotherTable.b = aTable.b );
[편집하다]
산세는 의도의 진술 :
SELECT a,b FROM aTable WHERE EXISTS ( SELECT * FROM anotherTable WHERE anotherTable.a = aTable.a AND anotherTable.b = aTable.b );
그것은 10 년 이상을 위해, MS SQL 여전히 튜플 일류를 지원하지 않는, 다소 절름발이입니다. IN 튜플 구조는 유사은 구조를 EXISTS보다 훨씬 더 읽을 수 있습니다. BTW, 또한 (tster의 코드) 작동하지만 더 유연 뭔가 미래 증거를 필요로하는 경우, 사용이 존재하는 가입.
[편집하다]
SQLite는의 말하기, 내가 최근에 취미 삼아하고있다. 그래, 인디애나는 일을하지 않는 튜플
-
==============================
2.당신이 사용할 수있는 가입 :
당신이 사용할 수있는 가입 :
SELECT aTable.a, aTable.b FROM aTable JOIN anotherTable ON aTable.a = anotherTable.a AND aTable.b = anotherTable.b
-
==============================
3.또 다른 대안은 하나의 필드로 2 튜플을 만들기 위해 연결을 사용하는 것입니다 :
또 다른 대안은 하나의 필드로 2 튜플을 만들기 위해 연결을 사용하는 것입니다 :
SELECT a,b FROM aTable WHERE (aTable.a||'-'||aTable.b) IN (SELECT (anotherTable.a || '-' || anotherTable.b FROM anotherTable);
... 단지 A 또는 B가 구분 기호를 포함하면 나쁜 일이 일어날 수 있다는 것을 인식 '-'
from https://stackoverflow.com/questions/1474964/using-tuples-in-sql-in-clause by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 이 SELECT 쿼리는 마무리 180 초 소요 (0) | 2020.07.04 |
---|---|
[SQL] 지난 일요일 찾기 (0) | 2020.07.03 |
[SQL] 오라클 DB : java.sql.SQLException의 : 폐쇄 연결 (0) | 2020.07.03 |
[SQL] MySQL은 어떻게 클러스터 된 인덱스를 만들려면 어떻게해야합니까? (0) | 2020.07.03 |
[SQL] SQL : 다 대다 테이블 및 쿼리 (0) | 2020.07.03 |