【发布时间】:2016-10-15 08:35:01
【问题描述】:
我有一个非常简单的子查询,但我认为我遗漏了一些东西,因为 MySQL 永远运行它。
假设我有两张桌子,一张FruitGenre 和一张FruitFlavor
FRUIT GENRE
| id | name |
| 1 | apple |
| 2 | orange |
FRUIT FLAVOR
| fruit_id | flavor |
| 1 | cherry |
| 2 | orange |
是的,你可以吃樱桃味的苹果。但任何口味都只与一种水果相关(例如,不可能有樱桃味的樱桃)。
我的要求如下:
SELECT * FROM FruitGenre WHERE id IN (SELECT fruit_id FROM FruitFlavor where FruitFlavor.flavor='cherry')
但是,我可以等待一个小时,但仍然没有反应。但如果我将请求一分为二,我会立即得到响应。
拆分:
SELECT fruit_id FROM FruitFlavor where FruitFlavor.flavor='cherry';
SELECT * FROM FruitGenre WHERE id IN (id_written_on_paper_from_previous_request)
任何帮助将不胜感激。
【问题讨论】:
-
但是如果我将请求一分为二你能添加那个代码吗?
-
您尝试过使用
EXISTS或JOIN吗? -
两张表有多少行?
-
我没有尝试JOIN,第一个(FruitGenre)有7000 els,FruitFlavor有210 000。
-
@Prdp 是的,完成 :)
标签: mysql sql database subquery