2010-08-01 4 views
1

내가이 쿼리를 실행하는 경우 :질문 : MySQL은 서브 쿼리

SELECT `Manga`.`id`, `Manga`.`name` FROM `mangas` AS `Manga` WHERE `Manga`.`id` in 
(
SELECT `manga_id` FROM `mangas_genres` where `manga_id` = 1 
) 

내 컴퓨터가 응답하지 않습니다 (난 그냥 잘못 입력). 이 쿼리를 실행할 수 없습니다. 위 코드가 유효하지 않습니까? 도와주세요.

나는 그것이 유효하다고 생각하지만 실행할 수는 없다. 나는 이해하지 못한다. 그것은 확실히 MySQL을, 나는 MYSQL 작업대 (PHP가 아닌)에 쿼리를 실행 내 컴퓨터가 매우 느리게 (쿼리를 실행하는 동안) 내 테이블의 만화와 mangas_genres는 5000 개 이상의 행이 있습니다.

+1

속도를 인덱스 응답? –

+0

'SELECT 'manga_id'FROM 'mangas_genres'여기서 'manga_id'= 1'은 항상 1 또는 아무것도 반환하지 않습니다. 나는 그것이 원하는 결과가 아님을 짐작하고있다. 이것이 EXISTS를 대신 할 관용구가 아니라면? 어떤 오류가 발생합니까? –

답변

2

내 쿼리가 유효하지만 쿼리를 실행하는 데 많은 시간을 잃은 해결 (내 컴퓨터> 100 단위를, 그것의 원인이 컴퓨터가() 매우 느린 응답하지)는 그것이 될 수있는 것들

2

모든 테이블 및 열 이름의 철자가 올바른 것으로 가정 할 때 이는 유효한 쿼리입니다.

 
CREATE TABLE mangas_genres (manga_id INT NOT NULL); 
INSERT INTO mangas_genres (manga_id) VALUES (1); 

CREATE TABLE mangas (id INT NOT NULL, name VARCHAR(100) NOT NULL); 
INSERT INTO mangas (id, name) VALUES 
(1, 'manga1'), 
(2, 'manga2'); 

SELECT `Manga`.`id`, `Manga`.`name` FROM `mangas` AS `Manga` WHERE `Manga`.`id` in 
(
SELECT `manga_id` FROM `mangas_genres` where `manga_id` = 1 
) 

결과 :

 
id name 
1 manga1 

귀하의 문제는 다른 곳이다.