数据库表里查询商品(item), 要求同一个产品(product)下的商品,只能返回一个商品, 但同一个产品下一般会有多个商品, 应该怎么写?
商品(item),会有一个表明是哪个产品(product)的字段product_id.
例子,比如item_id为2,3,4的商品的product_id为1, item_id为1,5的商品的product_id为2, item_id为6的商品的product_id为3
我应该怎么写SQL,才能只返回item_id为1,2,6的这3个商品
怎么修改下面这个SQL:
SELECT * FROM item WHERE item_id IN (1,2,3,4,5,6)
3 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
SELECT
min(item_id) item_id,
product_id
FROM item
WHERE item_id IN (1,2,3,4,5,6)
GROUP BY product_id ;
你并没有说是取所有item_id中最小的(取值示例一般理解为随机示例),所以前面兄台直接用了item_id,当然默认是按大小顺序取的,不过你的sql_mode应该是严格限制group by用法的,所以不加min会报错,前面加上min就可以了,没必要使用子查询
慕丝7291255
TA贡献1859条经验 获得超6个赞
SELECT item_id,product_id FROM item WHERE item_id IN (1,2,3,4,5,6) GROUP BY product_id ;
呼唤远方
TA贡献1856条经验 获得超11个赞
解决了:
SELECT * FROM item WHERE item_id IN (SELECT min(item_id) FROM item WHERE stock>0 GROUP BY product_id)
- 3 回答
- 0 关注
- 621 浏览
添加回答
举报
0/150
提交
取消