鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ MYSQL如何實(shí)現(xiàn)按條件去重

MYSQL如何實(shí)現(xiàn)按條件去重

圖片描述

如上圖的數(shù)據(jù)。

假設(shè) art_title 為不希望重復(fù)的字段,參數(shù) version 為9.0.2

我的where條件 是like %[9.0.2]% or %[9.0.x]% or art_apply_version is null
所以會(huì)選出3條數(shù)據(jù)。

但是我期望的情況下
version為9.0.2->選擇出第三條數(shù)據(jù)
version為9.0.5->選擇出第二條數(shù)據(jù)
version為8.0.0->選擇出第一條數(shù)據(jù)

即 符合條件1,則不選出條件2的,符合條件2則不選擇出條件3的

因?yàn)檫@個(gè)sql是選取出一個(gè)列表 所以沒(méi)辦法像選擇單個(gè)數(shù)據(jù)一樣先判斷玩第一種情況的返回再去查找第二種情況。

或者如果sql層面不好實(shí)現(xiàn)的話。那php層面怎么處理這樣的數(shù)據(jù)去重呢?

回答
編輯回答
故人嘆

從程序上來(lái)解決,分3種情況判斷。

2017年2月19日 14:37
編輯回答
執(zhí)念

分三次查詢,
①version為9.0.2->選擇出第三條數(shù)據(jù) limit 2,1 如果沒(méi)有值查詢2
②version為9.0.5->選擇出第二條數(shù)據(jù) iimit 1,1 如果沒(méi)有值查詢3
③version為8.0.0->選擇出第一條數(shù)據(jù) limit 0,1

2018年4月28日 01:59
編輯回答
怣痛

在php層面就不是去重了,應(yīng)該是按條件精確查找:
參數(shù)8.0.0,找xxx_version為null的;
參數(shù)9.0.2,先找xxx_version為9.0.2的,沒(méi)有則找xxx_version為9.0.x的

2018年5月9日 02:13