[SQL] 이 열에 고유 한 값을 선택 MYSQL
SQL이 열에 고유 한 값을 선택 MYSQL
나는 데이터베이스에 고유 한 값을 선택합니다. 나에게 간단한 예를 통해 당신을 실행하자.
표:
foo bar
--- ---
a c
c f
d a
c a
f c
a c
d a
a c
c a
f c
오른쪽의 내 SQL은 SELECT DISTINCT foo는, 테이블 바있다 가정 해 봅시다. 다음은 내 결과입니다 :
foo bar
--- ---
a c
c f
d a
c a
f c
그러나 문제는 그들이 다른 순서에있는 단지 C는 C의 반복이 /가 있다는 것입니다. 나는 두 열에서 고유 한 값을 원하는,이 설정을 선택하지 않으려는, 제발 도와주세요!
해결법
-
==============================
1.아주 아주 악인 및 악 :
아주 아주 악인 및 악 :
select distinct least(foo, bar) as value1 , greatest(foo, bar) as value2 from table
-
==============================
2.방법에 의해 GROUP 사용에 대한?
방법에 의해 GROUP 사용에 대한?
SELECT foo는, foo는 BY MY_TABLE 그룹에서 바, 바
-
==============================
3.방법에 대해 :
방법에 대해 :
SELECT DISTINCT a.foo,a.bar FROM table a LEFT JOIN table b ON a.foo=b.bar and a.bar=b.foo WHERE b.foo IS NULL AND b.bar IS NULL
출력 :
foo bar --- --- d a
-
==============================
4.(그것은 폐쇄하지이기 때문에, 비대칭 뭔가가 특별한 이름이 있으면 나도 몰라) 당신은 대칭 폐쇄 반대 뭔가를 요구하고 있습니다. 폐쇄 및 두 개의 서로 다른 열을 비교해야 할 것 같은 폐쇄를 들어, 조인을 사용할 수 있습니다. 그들은 열을 통해 중복 될 때 당신이 두 행을 필터링하지 않는하려면, 당신은 반복을 구별하는 방법이 필요하고 상기 제 1의 적은이다 쌍을 포함하여 같은 중 하나를 포함한다.
(그것은 폐쇄하지이기 때문에, 비대칭 뭔가가 특별한 이름이 있으면 나도 몰라) 당신은 대칭 폐쇄 반대 뭔가를 요구하고 있습니다. 폐쇄 및 두 개의 서로 다른 열을 비교해야 할 것 같은 폐쇄를 들어, 조인을 사용할 수 있습니다. 그들은 열을 통해 중복 될 때 당신이 두 행을 필터링하지 않는하려면, 당신은 반복을 구별하는 방법이 필요하고 상기 제 1의 적은이다 쌍을 포함하여 같은 중 하나를 포함한다.
SELECT DISTINCT t1.foo, t1.bar FROM `table` t1 LEFT JOIN `table` t2 ON t1.foo=t2.bar AND t1.bar=t2.foo WHERE t2.foo IS NULL OR t1.foo <= t1.bar;
-
==============================
5.
SELECT foo, bar FROM tableX WHERE foo <= bar UNION SELECT bar, foo FROM tableX WHERE bar < foo
-
==============================
6.
SELECT DISTINCT foo, bar FROM table WHERE CONCAT(',',foo,bar,) NOT IN ( SELECT CONCAT(',',bar,foo) FROM table )
-
==============================
7.이것은 나를 위해 작동합니다 :
이것은 나를 위해 작동합니다 :
SELECT DISTINCT LEAST(sub.foo, sub.bar) as value_1 , GREATEST(sub.foo, sub.bar) as value_2 FROM (SELECT a.foo ,a.bar FROM table a JOIN table b on a.foo = b.bar and a.bar = b.foo) sub
-
==============================
8.그래서 내가 이해 당신은 무엇을 하나의 SQL 검색 결과 행에 두 필드를 결합하려는 ... 내가 여기에 매우 혼란 대부분의 해답을 발견했다.
그래서 내가 이해 당신은 무엇을 하나의 SQL 검색 결과 행에 두 필드를 결합하려는 ... 내가 여기에 매우 혼란 대부분의 해답을 발견했다.
이것은 내가 (여러 행과 여러 테이블로 확장 할 수 있습니다)해야 할 때 난 항상 그것을 할 방법입니다 :
FROM SELECT a.field ( 테이블에서 필드 1 AS SELECT foo는 노동 조합 TABLEX FROM 필드 1 AS SELECT 바 ) ㅏ
또는
FROM SELECT DISTINCT a.field1 ( TABLEX FROM 필드 1 AS SELECT foo는, 조건 UNION ALL AS SELECT 필드 1 바 TABLEX FROM 조건 ) a.conditions = 1 (일부 결과를 필터링하는 별도의 조건을 추가 WHERE a)
from https://stackoverflow.com/questions/6744759/mysql-select-distinct-values-in-two-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 연결된 서버는 null OLE DB 제공자 Microsoft.Jet.OLEDB.4.0의 인스턴스를 만들 수 없습니다 (0) | 2020.05.09 |
---|---|
[SQL] SQL 서버는 두 날짜 사이의 전체 일 받기 (0) | 2020.05.09 |
[SQL] SQL 집계 함수를 WHERE 절 (0) | 2020.05.09 |
[SQL] SQL 시간 간격 중복으로 행을 찾을 수있는 간단하고 효율적인 방법은 무엇입니까? (0) | 2020.05.09 |
[SQL] SQL 내부는 두 개 이상의 테이블을 조인 (0) | 2020.05.09 |