[SQL] 크로스 조합 (하지 순열)는 SQL에 참여
SQL크로스 조합 (하지 순열)는 SQL에 참여
나는 자신에게 가입 교차하고자하는 테이블이있는 경우, 어떻게 중복 행을 제거 할 수 있습니까? 아니면 다른 방법을 넣어, 내가 가입 교차는 "중요하지 않습니다 순서를"할 수 있습니까?
그래서 예를 들어, 나는 테이블 T이있는 경우 :
field |
-------
A |
B |
C |
나는 내가이 (가)를하지 않도록 자체에 가입 교차 | 행
T as t1
cross join
T as t2
on t1.field != t2.field
나는 다음을 얻을 것입니다 :
field | field
------+-------
A | B
A | C
B | A
B | C
C | A
C | B
그러나, 나 (A)에, B가 B, A와 같다
이러한 중복을 제거하는 좋은 방법이 있나요? 즉, 나는 조합이 아닌 순열을합니다.
해결법
-
==============================
1.
T as t1 inner join T as t2 on t1.field < t2.field
FWIW, 당신은 그냥 엄격히 CROSS 조인 아니라, INNER이 가입 할 수 있습니다. MySQL을 (그리고 아마도 다른 RDBMS) 치료는 이러한 두 가지 유형이 동일로 가입하지만, ANSI SQL에서, 십자가는 어떤 조건에 가입했다 가입하지 - 그것은 의도적 인 데카르트 제품입니다.
from https://stackoverflow.com/questions/7112513/combinations-not-permutations-from-cross-join-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL에서 문을위한 SqlParameter에로 목록 <문자열>을 번역 하는가? [복제] (0) | 2020.05.25 |
---|---|
[SQL] PLS-00428 : INTO 절은이 SELECT 문에 기대된다 (0) | 2020.05.25 |
[SQL] MySQL은 INSERT와 UPDATE 사이의 차이점은 무엇입니까? (0) | 2020.05.25 |
[SQL] MySQL의의 LOAD DATA LOCAL INFILE을 사용하여 CSV의 수입시에 MySQL의 날짜 형식 문자열로 날짜를 변경하는 방법 (0) | 2020.05.25 |
[SQL] 경고를 얻기 : Null 값이 집계 또는 다른 SET 연산에 의해 제거 (0) | 2020.05.25 |