在同一查询中计数和分组

时间:2015-06-20 05:44:14

标签: mysql

bid_count正在返回1 ...如何让它返回正确的出价计数?我知道它没有返回正确的数量,因为我按user_id进行分组。我可以更改查询,因此它也很重要。

"SELECT id, bid, item_id, user_id, MAX(bid) AS max_bid, COUNT(bid) AS bid_count, bid_date
  FROM bids
  WHERE item_id = ? 
  GROUP BY user_id ORDER BY id DESC"

2 个答案:

答案 0 :(得分:0)

尝试根据item_id对其进行分组。 item_id应该是具有不同出价的那个。

答案 1 :(得分:0)

你不应该在GROUP BY中使用非聚合表达式,除非它们在组中都是相同的。

如果要返回包含user_id计数的记录,则应使用子查询获取计数,然后将它们连接到结果:

SELECT id, bid, item_id, user_id, bid_date, max_bid, bid_count
  FROM bids
LEFT JOIN
  (SELECT user_id,MAX(bid) AS max_bid, COUNT(bid) AS bid_count
     FROM bids
    WHERE item_id = ? 
    GROUP BY user_id ) as group_table
ON bids.user_id = group_table.user_id
WHERE bids.item_id = ?