在mysql请求下
SELECT DISTINCT(codeAdherent), dateFin
FROM hs
WHERE
codeFamilleArticle IN ('ABO', 'ABOW')
AND dateFin >= date('2018-01-01')
ORDER BY codeAdherent ASC
codeAdherent date
1099 2018-12-31
1099 2019-12-31
1318 2018-12-31
1392 2018-12-31
1392 2019-12-31
1415 2018-12-31
1415 2019-12-31
1600 2018-12-31
1785 2018-12-31
1785 2019-12-31
1806 2018-12-31
1806 2019-12-31
1825 2018-12-31
1983 2019-12-31
2039 2018-12-31
2039 2019-12-31
有时codeAdherent出现两次,一次出现在2018-12-31,另一次出现在2019-12-31。
我想舍弃出现两次的行,而只保留那些到2018年出现一次的行。
可以使用PHP进行此操作,但是有一种方法只能使用查询吗?
答案 0 :(得分:0)
SELECT codeAdherent, MIN(dateFin) as dateFin
FROM hs WHERE codeFamilleArticle IN ('ABO', 'ABOW')
GROUP BY codeAdherent
ORDER BY codeAdherent ASC
答案 1 :(得分:0)
带有GROUP BY
子句的HAVING
只能返回唯一。
SELECT codeAdherent, MAX(dateFin) AS dateFin
FROM hs
WHERE codeFamilleArticle IN ('ABO','ABOW')
AND dateFin >= date('2018-01-01')
GROUP BY codeAdherent
HAVING COUNT(*) = 1
ORDER BY codeAdherent ASC