将这2个查询更改为单个查询?

时间:2013-01-30 09:49:58

标签: mysql

我想在单个查询中获取数据和总数:

SELECT id, order_name, order_ownurl, order_category, order_id
FROM `order_details`
WHERE ordered_name='nikon d3200'
ORDER BY ordered_price asc

SELECT count(distinct order_id)
FROM `order_details`
WHERE ordered_name='nikon d3200'

2 个答案:

答案 0 :(得分:1)

为此,您可以使用相关的子查询获取COUNT,如下所示:

SELECT 
  o1.id, 
  o1.order_name, 
  o1.order_ownurl, 
  o1.order_category, 
  o1.order_id,
  (SELECT count(distinct o2.order_id)
   FROM `order_details` o2
   WHERE o2.ordered_name = o1.ordered_name) AS OrderCount
FROM `order_details` o1
WHERE o1.ordered_name = 'nikon d3200'
ORDER BY o1.ordered_price asc;

答案 1 :(得分:1)

这是一个更好的方法,为什么我们需要子查询

这是解决方案,如果我错过了什么请告诉我!!

SELECT id, order_name, order_ownurl, order_category, order_id,count(distinct order_id)
FROM `order_details`
WHERE ordered_name='nikon d3200'
ORDER BY ordered_price asc

说明:当我们从单个表中选择数据时,我们不需要子查询。 子查询看起来很糟糕,如果没有其他工作,我们应该使用。

如果你遇到问题,请告诉我。

干杯!!!!