반응형
MySQL에 대한 SQL LEFT-JOIN 2개 필드
나는 견해가 있습니다.A
그리고 전망B
.
인A
나는 몇몇 시스템에 대한 많은 정보를 가지고 있다, 예를 들면,IP
그리고.port
내가 다 보존하고 싶은.B
추가하고 싶은 정보가 하나 있습니다.A
.
두 뷰 사이의 일치 필드는 다음과 같습니다.IP
그리고.Port
따라서 두 보기 모두에서 IP와 포트가 동일한 호스트를 일치시켜야 합니다.
예:
보기 A:
IP | OS | Hostname | Port | Protocol
1 | Win | hostONE | 80 | tcp
1 | Win | hostONE | 443 | tcp
1 | Win | hostONE | 8080 | tcp
2 | Linux | hostTWO | 21 | tcp
2 | Linux | hostTWO | 80 | tcp
3 | Linux | hostTR | 22 | tcp
보기 B:
IP | Port | State
1 | 443 | Open
2 | 80 | Closed
산출량
IP | OS | Hostname | Port | Protocol | State
1 | Win | hostONE | 80 | tcp |
1 | Win | hostONE | 443 | tcp | Open
1 | Win | hostONE | 8080 | tcp |
2 | Linux | hostTWO | 21 | tcp | Closed
2 | Linux | hostTWO | 80 | tcp |
3 | Linux | hostTR | 22 | tcp |
참고: 보기 A의 일부 호스트에 보기 B의 IP/포트 관련 항목이 없을 수 있습니다.
또한 보기 A의 일부 호스트에서 보기 B와 일치하는 항목이 있을 수도 있습니다.
뷰 A의 모든 항목과 뷰 B의 올바른 관련 항목을 얻으려면 LEFT JOIN을 사용해야 한다고 생각했지만 작동하지 않았습니다.올바른 WHERE 절과 JOIN 솔루션으로 쿼리를 조정할 수 없습니다.
감 잡히는 게 없어요?
select a.ip, a.os, a.hostname, a.port, a.protocol,
b.state
from a
left join b on a.ip = b.ip
and a.port = b.port
다음과 같은 방법을 시도해 보겠습니다.
select
a.ip,
a.os,
a.hostname,
a.port,
a.protocol,
b.state
from a
left join b
on a.ip = b.ip
and a.port = b.port /*if you has to filter by columns from right table , then add this condition in ON clause*/
where a.somecolumn = somevalue /*if you have to filter by some column from left table, then add it to where condition*/
그래서.where
다음과 같은 방법으로만 오른쪽 테이블에서 열로 설정한 결과를 필터링할 수 있습니다.
...
where b.somecolumn <> (=) null
언급URL : https://stackoverflow.com/questions/18914698/sql-left-join-on-2-fields-for-mysql
반응형
'IT' 카테고리의 다른 글
iOS 11에서 위치 서비스가 작동하지 않음 (0) | 2023.09.05 |
---|---|
mysql에 비해 npm mariasql의 이점 (0) | 2023.09.05 |
Python 스크립트를 사용하여 가상 환경 활성화 (0) | 2023.09.05 |
문자열 값 앞에 있는 'u' 기호는 무엇을 의미합니까? (0) | 2023.09.05 |
제로 길이 비트 필드의 실용적인 사용 (0) | 2023.09.05 |