为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
噜噜哒 2019-03-11 21:18:25
数据库表里查询商品(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就可以了,没必要使用子查询

查看完整回答
反对 回复 2019-03-18
?
慕丝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 ;

查看完整回答
反对 回复 2019-03-18
?
呼唤远方

TA贡献1856条经验 获得超11个赞

解决了:

SELECT * FROM item WHERE item_id IN (SELECT min(item_id) FROM item WHERE stock>0 GROUP BY product_id)
查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 621 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信