问题:mysql子查询

时间:2010-08-01 00:33:26

标签: sql 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行。

2 个答案:

答案 0 :(得分: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

你的问题出在其他地方。

答案 1 :(得分:2)

我的查询有效但运行查询失去了很多时间(在我的计算机上大于100秒,导致计算机速度非常慢(没有响应)), 求解是加速的指标