我有一个与MySQL集成的PHP脚本,将.plist文件发送到包含两种类型项目(项目为歌曲)的iPhone应用程序:
我使用两个查询和一些PHP完全可行,以所需的顺序抓取过去和未来的项目(我想要各自的变量)。主要是因为我无法找到或提出单个查询解决方案,但我很好奇你们将如何解决这个问题。是否有单个查询以按我想要的顺序获取行?是否有一个查询以其他顺序获取行?
无论如何,这里是PHP和SQL,它抓取我想要的结果行,并按照我希望它们出现在结果.plist中的顺序放置它们。我主要使用UNIX时间戳,因为它更容易,所以我希望我不会受到严厉批评 - 我认为它不会特别影响我的特定问题。
$readbehind = mysql_query(sprintf('SELECT SongID, RemoteSongLocation, SongTitle, UNIX_TIMESTAMP( ScheduledActivationDateTime ) AS ActivateAfterUnixTime FROM `thesongs` WHERE UNIX_TIMESTAMP( ScheduledActivationDateTime ) < UNIX_TIMESTAMP( ) ORDER BY ScheduledActivationDateTime DESC LIMIT 0, %d', MAX_READBEHIND_SONGS));
$readahead = mysql_query(sprintf('SELECT SongID, RemoteSongLocation, SongTitle, UNIX_TIMESTAMP( ScheduledActivationDateTime ) AS ActivateAfterUnixTime FROM `thesongs` WHERE UNIX_TIMESTAMP( ScheduledActivationDateTime ) > UNIX_TIMESTAMP( ) ORDER BY ScheduledActivationDateTime ASC LIMIT 0, %d', MAX_READAHEAD_SONGS));
$songsForClient = array();
while ($row = mysql_fetch_assoc($readbehind)) {
$songsForClient[] = $row;
}
while ($row = mysql_fetch_assoc($readahead)) {
$songsForClient[] = $row;
}
答案 0 :(得分:1)
您可以使用union
连接两个语句http://dev.mysql.com/doc/refman/5.5/en/union.html
或者您只需选择所有内容并使用WHERE SongID != ' . $id
您可能需要检查其中一个SongID是否被多次使用,或者使用另一个sql列