Mysql 按最大数量连接两个表

Mysql 按最大数量连接两个表,mysql,sql,left-join,inner-join,right-join,Mysql,Sql,Left Join,Inner Join,Right Join,我有两张这样的桌子 |episodes |-----------|------|------|-------|-------| |id|movie_id|title |season|episode|scraped| |-----------|-------------|---------------| |1 |22 |ep1 |5 |1 |0 | |2 |22 |ep2 |6 |1 |0 | |3 |33

我有两张这样的桌子

|episodes
|-----------|------|------|-------|-------|
|id|movie_id|title |season|episode|scraped|
|-----------|-------------|---------------|
|1 |22      |ep1   |5     |1      |0      |
|2 |22      |ep2   |6     |1      |0      |
|3 |33      |ep1   |7     |1      |0      |
|4 |33      |ep2   |7     |2      |0      |
|-----------------------------------------|


|pages                                                    
|----------------|------------|
|pid |  imdb_id  |  imdb_title|
|----------------|-------------
|11  |  X-Files  |  imdb1     |
|22  |  Seinfeld |  imdb2     |
|33  |  Lost     |  imdb3     |
|-----------------------------|          
我想根据季节的最大数量将两个表合并为一个表。例子;宋飞的最后一个赛季是6个,而失败者的唯一一个赛季是7个

表最终版本应如下所示

|-----------|-----|------|-------|-------|---|--------|----------|
|id|movie_id|title|season|episode|scraped|pid| imdb_id|imdb_title|
|-----------|-----|------|---------------|---|--------|----------|
|3 |33      |ep1  |7     |1      |0      |11 |Lost    |imdb3     |
|4 |33      |ep2  |7     |2      |0      |11 |Lost    |imdb3     |
|2 |22      |ep2  |6     |1      |0      |22 |Seinfeld|imdb2     |
|----------------------------------------------------------------|
我尝试了此查询,但无法包括
页面

SELECT a.*
FROM episodes a
INNER JOIN (
    SELECT movie_id, MAX(season) season
    FROM episodes
    GROUP BY movie_id
) b ON a.movie_id = b.movie_id AND a.season = b.season
WHERE a.scraped = '0'
后来又尝试了另一个查询,这次添加了pages表,但是这个查询比以前慢了很多

SELECT a.*, c.pid AS page_id, c.imdb_id, c.imdb_title 
 FROM episodes a    
 INNER JOIN pages AS c ON c.id = a.movie_id                                        
 LEFT OUTER JOIN episodes b ON a.movie_id = b.movie_id AND a.season < b.season                                        
 WHERE b.movie_id IS NULL and a.scraped = '0' 
选择一个*,c.pid作为页面id,c.imdb\u id,c.imdb\u标题
从第a集开始
在c.id=a.movie\u id上作为c的内部连接页
左外连接a.movie_id=b.movie_id和a.season

我知道,有点困惑,但我希望能正确解释。如何解决这个问题?

你应该按电影id加入max(季节)小组

select e.id, e.movie_id, e.title, e.season, e,epison, p.pid, p.imdb_id, b.imdb_title
from episod 2 
inner join pages p on p.pid = e.movie_id
inner join (
  select movie_di, max(season) as max_season
  from episodes 
  group by movie_id
) t on t.movie_id = e.movie_id and t.max_season = e.season 

第一个查询有什么问题?第一个查询有效,但不包括
剧集
表。您可能的意思是“不包括
页面
表”。那就加入吧<代码>以p.pid=a.movie\u id上的p的形式连接页面
为什么不能将页面包括在表中?这难道不是业界所说的“无脑”吗!?!