MYSQL如何实现按条件去重

图片描述

如上图的数据。

假设 art_title 为不希望重复的字段,参数 version 为9.0.2

我的where条件 是like %[9.0.2]% or %[9.0.x]% or art_apply_version is null
所以会选出3条数据。

但是我期望的情况下
version为9.0.2->选择出第三条数据
version为9.0.5->选择出第二条数据
version为8.0.0->选择出第一条数据

即 符合条件1,则不选出条件2的,符合条件2则不选择出条件3的

因为这个sql是选取出一个列表 所以没办法像选择单个数据一样先判断玩第一种情况的返回再去查找第二种情况。

或者如果sql层面不好实现的话。那php层面怎么处理这样的数据去重呢?

阅读 4k
3 个回答

分三次查询,
①version为9.0.2->选择出第三条数据 limit 2,1 如果没有值查询2
②version为9.0.5->选择出第二条数据 iimit 1,1 如果没有值查询3
③version为8.0.0->选择出第一条数据 limit 0,1

从程序上来解决,分3种情况判断。

在php层面就不是去重了,应该是按条件精确查找:
参数8.0.0,找xxx_version为null的;
参数9.0.2,先找xxx_version为9.0.2的,没有则找xxx_version为9.0.x的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题