这是我的原始查询:
$query = mysql_query("SELECT s.*, UNIX_TIMESTAMP(`date`) AS `date`, f.userid as favoritehash FROM songs s LEFT JOIN favorites f ON f.favorite = s.id AND f.userid = '$userhash' ORDER BY s.date DESC");
这会返回我的数据库中的所有歌曲
,然后加入我的收藏夹
表中的数据,这样我就可以显示回访者点击了哪些项目作为收藏夹。访问者通过存储在 cookie 和 favorites
表中的唯一标识来识别。
我需要更改此查询,以便只获取最近几个月的歌曲。以下是我尝试将 DATE_SUB 添加到我的查询中:
$query = mysql_query("SELECT s.*, UNIX_TIMESTAMP(`date`) AS `date`, f.userid as favoritehash FROM songs s WHERE `date` >= DATE_SUB( NOW( ) , INTERVAL 1 MONTH ) LEFT JOIN favorites f ON f.favorite = s.id AND f.userid = '$userhash' ORDER BY s.date DESC");
建议?
最佳答案
您只需移动 WHERE
子句:
SELECT
s.*,
UNIX_TIMESTAMP(`date`) AS `date`,
f.userid as favoritehash
FROM
songs s
LEFT JOIN favorites f ON f.favorite = s.id AND f.userid = '$userhash'
WHERE `date` >= DATE_SUB( NOW( ) , INTERVAL 1 MONTH )
ORDER BY s.date DESC
LEFT JOIN
是 FROM
中表列表的一部分,您不能在 where 中设置条件。
关于php - 添加 DATE_SUB 查询以返回 mysql 中的值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3051237/