我正在用MySQL编写一个查询,它对我提出了挑战。情况就是这样;
我们假设我有一个名为“status
”的表格,可以为这样的电视节目保存数据;
+---------+---------+---------+---------+
| id | season | episode | channel |
+---------+---------+---------+---------+
| 1 | 2 | 10 | a |
| 1 | 3 | 2 | b |
| 1 | 2 | 9 | c |
| 1 | 3 | 1 | d |
| 1 | 3 | 2 | e |
+---------+---------+---------+---------+
我想检索包含上一季最后发布的一集的行。根据上表,我希望得到类似的结果
+---------+---------+---------+
| season | episode | channel |
+---------+---------+---------+
| 3 | 2 | b |
| 3 | 2 | e |
+---------+---------+---------+
季节列的最大值是3.在这种情况下,我检索了具有季节列的最大值的行,其中季节等于3.我写了一个查询,它给出了预期的结果,但我不认为这是一个合适的查询。我怎样才能改进下面的查询?如果需要,我可以添加额外信息或提供更多示例。
SELECT `season`,
`episode`,
`channel`
FROM `status`
WHERE `tvseriesid` = 1
AND `season` = (SELECT Max(season)
FROM `status`
WHERE `tvseriesid` = 1)
AND `episode` = (SELECT Max(episode)
FROM `status`
WHERE `tvseriesid` = 1
AND `season` = (SELECT Max(season)
FROM `status`
WHERE `tvseriesid` = 1))
答案 0 :(得分:1)
这是一种将所有信息放在一行中的方法。但是,它有点简单:
var returnedValues = myFunc(arg1,arg2, function mycallback(values)
{
return values;
});
// Now I would to use the returnedValues here...