2010-08-01 78 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和mangas_genres有超過5000行。

+1

喝多少應對的呢? – 2010-08-01 00:35:28

+0

'SELECT'manga_id'FROM'mangas_genres'其中'manga_id'= 1'將始終返回1或不返回任何內容。我猜這不是預期的結果。除非這是一些成語來代替'EXISTS'?你會得到什麼錯誤? – 2010-08-01 00:46:01

回答

2

我的查詢是有效的,但失去了許多時間來運行查詢(> 100S我的電腦上,它會導致計算機變慢很(不響應)), 的解決是指數加快

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 

您的問題是其他地方。