【发布时间】:2015-06-16 05:50:51
【问题描述】:
这是我的查询:
SELECT DISTINCT `post_data`. * , pv.`seller_id` , pv.`islimited` , pv.`isquantity` , pv.`isslider`, `price`.`original_price` , `price`.`discount_percentage` , `timelimit`.`start_date` , `timelimit`.`expire_date` , `quantity`.`in_stock`, `currency`.`currency_symbol`, `seller`.`directory`, `post_to_cat`.`cat_id`, count(`sales`.`sales_id`) as sale FROM `post_view` AS pv
INNER JOIN `post_data` ON pv.`post_id` = `post_data`.`post_id` AND pv.`status` = 1
INNER JOIN `price` ON pv.`post_id` = `price`.`post_id`
INNER JOIN `currency` ON `price`.`currency_id` = `currency`.`currency_id`
INNER JOIN `seller` ON pv.`seller_id` = `seller`.`seller_id`
INNER JOIN `post_to_cat` ON `post_to_cat`.`cat_id` = 1 AND `post_to_cat`.`post_id` = `post_data`.`post_id`
LEFT JOIN `timelimit` ON ( CASE WHEN pv.`islimited` = 1 THEN `timelimit`.`post_id` ELSE -1 END ) = pv.`post_id`
LEFT JOIN `quantity` ON ( CASE WHEN pv.`isquantity` = 1 THEN `quantity`.`post_id` ELSE -1 END ) = pv.`post_id`
LEFT JOIN `sales` ON `sales`.`post_id` = pv.`post_id` AND `sales`.`status` = 1
WHERE pv.`status` = 1
ORDER BY pv.`post_id` DESC LIMIT 1
ORDER BY DESC 不起作用,它只是返回表中的第一行,但我想获得最高的 post_id 值行。我犯了什么错误?
【问题讨论】:
-
你有
count()函数,没有group by它只有一行。 -
LIMIT 1你期待什么?它会按照您的要求返回 1 行。 -
是的,但我希望它能够返回最后添加的帖子!因为我正在按 post_id 对 desc 进行排序
-
为什么在你的时间限制和数量加入你加入到pv.post_id?这对我来说似乎不对。
-
没关系,我只是想了解一下。我已经给出了建议。如果它不起作用,请发布一些示例数据(最好在SQL Fiddle 和预期结果中,以便我可以尝试重新创建问题。
标签: mysql sql join phpmyadmin left-join