我网站要求的产品在过去3个月内首先显示任何产品(从最近开始),然后其余alphbeticaly。目前该网站是用类编写的,目前产品按添加日期排序。为了尽量减少工作量,我想知道是否可以在一个SQL查询中完成上述操作?我认为这将需要2个单独的查询,但我不是SQL的专家,所以想知道这是否可以完成?最近3个月首次订购,然后按字母顺序排列
问候
菲尔
编辑
SELECT pr.id, pr.name AS prod_name, pr.eye_size, pr.bridge_size, pr.opt_size, pr.price, pr.range_id, pr.date_added, ra.name AS range_name
FROM oa_product AS pr, oa_brand AS br, oa_range AS ra
WHERE pr.status = 'Launched'
AND pr.brand_id = br.id
AND br.filename = 'karenmillen'
AND pr.status = 'Launched'
AND pr.range_id = ra.id
AND br.status = 'Active'
ORDER BY
CASE WHEN DATEDIFF('m', GETDATE(
), date_added) <3
THEN date_added
ELSE NULL , prod_name
LIMIT 0 , 6
得到错误MySQL服务器版本正确的语法使用近'DATE_ADDED)< 3 THEN DATE_ADDED ELSE NULL,PROD_NAME LIMIT 0 ,第11行6'
任何人都知道为什么?
我觉得自己很蠢。我在阅读并错误理解你的问题后添加了一条评论。我不知道这是否可能。但即使是这样,使用两种不同的查询代码将更容易阅读吗? – 2011-12-22 08:42:06
对于两个单独的查询,它可能也会更快,尤其是如果您从不需要显示“其余”(因为它只从第4页开始)。 – Thilo 2011-12-22 08:43:49