好的,所以我有一张叫做“拍卖”的桌子,每次拍卖都有'product_id'关联。
拍卖表可能包含500件重复产品。
我想通过auction_id asc订购(首先展示新的拍卖),但也只显示不同的产品。使用distinct不起作用,当我按照product_id进行分组时,它没有正确地对拍卖进行排序..这就是我所拥有的
SELECT product_id, auctions.id auctions
INNER JOIN products ON auctions.product_id = products.id
INNER JOIN product_groups ON products.group_id = product_groups.id
INNER JOIN product_images on products.id = product_images.product_id
WHERE products.group_id = '1'
GROUP BY products.id
ORDER BY auctions.id ASC
LIMIT 10
在此示例中,它确实显示了唯一的产品,但订单不正确...如果我将auctions.id添加到group by,订单是正确的,但有多个产品..
任何帮助都会很棒 - 谢谢!
答案 0 :(得分:1)
您没有正确使用GROUP BY。如果您希望查询有效,则必须在auctions.id上使用agregate函数,例如MIN,以检索每个product_id组的最小auction.id:
SELECT product_id, MIN(auctions.id) auctions
INNER JOIN products ON auctions.product_id = products.id
INNER JOIN product_groups ON products.group_id = product_groups.id
INNER JOIN product_images on products.id = product_images.product_id
WHERE products.group_id = '1'
GROUP BY products.id
ORDER BY auctions.id ASC
LIMIT 10
P.S。您可以在查询中使用表的别名来缩短它。