这就是我目前的情况(减少一点):
SELECT *, item_prices.price AS minPrice
FROM items
LEFT JOIN item_details USING(item_id)
LEFT JOIN item_prices USING(item_id)
WHERE 1=1
GROUP BY item_id;
我的问题是,item_prices
可能会为每个项目匹配多行 - 我只想获得最小值为price
的行。我一直在寻找类似问题的网站和网页,但我感觉有点偏离我的深度,有人可以帮忙吗?
答案 0 :(得分:2)
您应该使用查询:
SELECT *, MIN(item_prices.price) AS minPrice
FROM items
LEFT JOIN item_details USING(item_id)
LEFT JOIN item_prices USING(item_id)
WHERE 1=1
GROUP BY item_id;
答案 1 :(得分:1)
将您的联接替换为item_prices,并使用联接到子查询,该子查询获得每个项目的最低价格:
left join (select item_id, min(price) price group by item_id) minprice using (item_id)
我通常不使用MySQL,但我相信语法是有效的。可能需要调整。
答案 2 :(得分:1)
您可以使用子查询执行此操作,方法如下:
SELECT *,
(SELECT
MIN(item_price)
FROM
item_prices inner
WHERE inner.item_id = items.item_id) AS minPrice
FROM items
GROUP BY item_id;