如何写sql把相同字段的行保留第一行?

数据库表里查询商品(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) 
噜噜哒
浏览 622回答 3
3回答

Cats萌萌

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

SELECT item_id,product_id FROM item WHERE item_id IN (1,2,3,4,5,6) GROUP BY product_id ;

呼唤远方

解决了: SELECT * FROM item WHERE item_id IN (SELECT min(item_id) FROM item WHERE stock>0 GROUP BY product_id)
打开App,查看更多内容
随时随地看视频慕课网APP