이 질문을 한 문장으로 요약하는 것은 어렵습니다. 두 테이블이 있습니다. 그 중 하나는 외부 피드에 의해 자동으로 정기적으로 업데이트됩니다. 두 번째 테이블에는 고유 키로 식별되는 두 번째 테이블의 일부 행에 대한 추가 정보가 있습니다. 다음은 그 예입니다.SELECT에서 두 테이블을 하나로 축소해야합니까?
Table1 id: int PRIMARY KEY channel: varchar(255) UNIQUE KEY name: varchar(255) NOT NULL verified: tinyint(1) NOT NULL Table2 id: int PRIMARY KEY channel: varchar(255) UNIQUE KEY extra_info: varchar(255)
표 1은 기본 테이블입니다. 이것은 실제로 선택되는 테이블입니다. table2에있는 필드 (ID 및 채널 제외)를 선택하면 Table1에있는 Table2의 모든 행이 선택시 병합되는 것처럼 Table1로 이동해야합니다.
예를 들어, 나는이 두 테이블의 정보가 내가 진행하는 가장 빠른 방법이 무엇인지 궁금하네요이
[{
"id": 5,
"channel": "bkids2",
"name": "Bkid",
"verified": true,
"extra_info": "Some extra information added using Table2"
},
...
]
같은 JSON 출력으로 끝내고 싶다. SQL 문을 사용하여을 신속하게 할 수 있습니까? 몇 가지 유형의 쿼리가 매우 느린 것을 알고 있으므로 두 테이블의 모든 데이터를 가져 와서 서버 측 프로그래밍 언어를 사용하여 병합을 수행하는 것이 더 빠를 것입니다.
전자가 정답이라고 가정 할 때 나는 절반 방법입니다.이 경우 MySQL을 사용하여 어떻게합니까? 서브 쿼리? 조인? 노동 조합?
나는이 기술들이 어떻게 작동하는지, 얼마나 빨리/느리게 작동하는지 완전히 이해하지 못함을 인정한다. 올바른 방향으로 나를 지적 할 수있는 사람 덕분이다.
이것은 거의 완벽하게 작동하지만 행을 찾을 수없는 경우 table2의 열을 기본값으로 설정하는 방법은 무엇입니까? 예를 들어 table2에 일치하는 행이 없기 때문에'extra_info' 열을 테이블에 채울 수 없다면 문자열 "{}"또는 숫자 등으로 설정해야합니까? – Hubro
나는 IFNULL (Table2.extra_info, 'DefaultValue')를 extra_info로 추가하여 나의 대답을 편집했다. –
우수, 감사합니다 – Hubro