首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取一个组/线程/主题的N行

问获取一个组/线程/主题的N行
EN

Stack Overflow用户
提问于 2011-05-10 23:45:42
回答 2查看 94关注 0票数 3

我正在寻找一个正确的mysql查询我的网站http://watiseropderadio.nl (荷兰语)。这是一个网站,用来了解荷兰流行电台播放了哪些歌曲。

我想对每个无线电台执行一个返回13行的查询。有8个不同的无线电台。

这是我的表格:

代码语言:javascript
复制
id       | radioname       | time  | artist    | song
--------------------------------------------------------------
23421    | radio 538       | 19:34 | Queen     | Bohemian
23422    | radio veronica  | 19:35 | Rammstein | Blablabla
23423    | slam fm         | 19:34 | Roxette   | Blablabla
23424    | 3fm             | 19:34 | Blabla    | Blablabla
....

它是一个包含3,000,000+记录和以下键的表:

代码语言:javascript
复制
PRIMARY             PRIMARY  3083007   id
radioname           INDEX    8         radioname
track with artist   INDEX    23715     artist
                                       song

这就是我想要的输出:

代码语言:javascript
复制
id       | radioname       | time  | artist    | song
--------------------------------------------------------------
23455    | radio 538       | 19:30 | Blabla    | Blablabla
23470    | radio 538       | 19:33 | Blabla    | Blablabla
23484    | radio 538       | 19:36 | Blabla    | Blablabla
23498    | radio 538       | 19:38 | Blabla    | Blablabla
total 13 x ....
23456    | radio veronica  | 19:29 | Blabla    | Blablabla
23476    | radio veronica  | 19:32 | Blabla    | Blablabla
23483    | radio veronica  | 19:36 | Blabla    | Blablabla
23495    | radio veronica  | 19:39 | Blabla    | Blablabla
total 13 x ....

结果的顺序并不重要,查询必须很快。我喜欢自己尝试,但这对我来说有点太多了。

我不知道钥匙是不是适合这份工作,有人能给点建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-11 00:26:03

这很棘手,因为虽然有方法可以说“为这个查询只获取13条记录”,但就我所知,没有办法直接说“对于字段x的每个值,只为我获取13条记录”。

我能想到的唯一方法是在记录中添加一个“播放编号”字段,或者如果您不能或不想更改“播放的歌曲”记录,则创建另一个表来保存此编号。然后,当记录添加到表中时,为每个记录提供该电台的下一个可用编号。(实际上,MySQL有一个自动执行此操作的功能。)那么您的查询可以查找这个索引<=13,或者如果可以删除记录,那么内部查询执行"select station,max(play) as maxplay group by station",那么外部查询可以选择"where play>maxplay-13“。

更新

要设置MySQL自动递增,请参阅http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html。请特别注意围绕以下句子的讨论:“对于MyISAM和BDB表,您可以在多列索引中的辅助列上指定前缀。在这种情况下,为AUTO_INCREMENT列生成的值的计算公式为MAX(auto_increment_column) +1 WHERE prefix=给定前缀。这在您希望将数据放入有序组时非常有用。”(坦率地说,我使用这个已经有一段时间了,所以我不能提供太多细节。)

票数 1
EN

Stack Overflow用户

发布于 2011-05-11 01:26:41

遍历广播电台列表(因为只有8个)并发出8个独立的查询,这是可以接受的吗?就像这样

代码语言:javascript
复制
<?php
$stations = array('radio 538', 'radio veronica', 'slam fm', '3fm');
foreach ($stations as $station)
{
    $query = sprintf('SELECT * FROM table WHERE radioname="%s" ORDER BY time ASC LIMIT 0,13', $station);
    // do something
}
?>

未经测试!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5952776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档