나는 MySQL의에서 다음과 같은 테이블 설정을 가지고 :조인과 함께 문자 및 그룹을 선택 하시겠습니까?
CREATE TABLE `games_characters` (
`game_id` int(11) DEFAULT NULL,
`player_id` int(11) DEFAULT NULL,
`character_id` int(11) DEFAULT NULL,
KEY `game_id_key` (`game_id`),
KEY `character_id_key` (`character_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
내 목표는 character_ids의 목록이 모든 GAME_ID에 존재되는 GAME_ID를 얻는 것입니다.
데이터의 설정 예 :
1, 1
1, 2
1, 3
2, 1
2, 2
3, 1
3, 4
의 내가 character_id 1, 2를 가지고 어디 GAME_ID을 얻고 싶은 말을하자, 그리고 3. 어떻게 효율적인 쿼리를 만드는 방법에 대한 갈 것이라고? 내가 지금까지 가지고있는 최고의 아이디어는 여러 번 테이블에 합류하고 있었지만 이것을하기위한 더 좋은 방법이 있어야한다고 생각한다.
감사
편집 : 이것은 가장 좋은 쿼리 시간 증명으로 내가 사용하는 최종 솔루션이었다 호기심 사람을 위해 :
SELECT game_ID
FROM (
SELECT DISTINCT character_ID, game_ID
FROM games_Characters
) AS T
WHERE character_ID
IN (1, 2, 3)
GROUP BY game_ID
HAVING COUNT(*) =3
GAME_ID – MasterGberry
에서 중복 character_ids이 될 수 있다면 나는 GAME_ID – MasterGberry
서로 각 character_id를 분리 할 세 번째 열라고 player_id을 추가 한 것을 다음 선택'(하위이 같은 선택으로의 수정 별개의 character_id, game_Characters'의 game_ID) 위의 game_Characters 바꾸기 – xQbert