mysql min( ) 求最小值时 加的条件不生效
求 一张表内 项目 a 时间最小值 项目 B 时间最小值
SELECT `ID` , `项目` ,`昵称` , `时间` , `项目` , `UID` FROM `Probs` WHERE `时间` = ( SELECT MIN(`时间`) FROM `Probs` WHERE `项目` like '%无相之水%' and day(参与时间)=day(now()) )
求 项目 为 无相之水 中 最小时间的值 出现2个
因为项目 A 时间是 20.9 项目B 时间也是 20.9
但是 我加了 项目
like '%无相之水%' 不知道为什么还出现2个
求解答
因为你最外层条件是按时间条件查询的,你要把like放到外面就行了
SELECT `ID` , `项目` ,`昵称` , `时间` , `项目` , `UID` FROM `Probs`
WHERE `时间` =
( SELECT MIN(`时间`) FROM `Probs` WHERE `项目` like '%无相之水%' and day(参与时间)=day(now()) )
and `项目` like '%无相之水%'
你下面的提问
select * from ( select * from `Probs` order by `时间` asc ) s group by `项目`
在你sql的基础上改一下,像下面这样
SELECT `ID` , `项目` ,`昵称` , `时间` , `项目` , `UID` FROM `Probs`
WHERE `时间` =
( SELECT MIN(`时间`) FROM `Probs` WHERE `项目` like '%无相之水%' and day(参与时间)=day(now()) )
and `项目` like '%无相之水%'
或者
SELECT `ID` , `项目` ,`昵称` , `时间` , `项目` , `UID` FROM `Probs` a
WHERE `时间` =
( SELECT MIN(`时间`) FROM `Probs` b WHERE
a.项目=b.项目 and `项目` like '%无相之水%' and day(参与时间)=day(now()) )
在外层添加一个判断条件:
SELECT `ID` , `项目` ,`昵称` , `时间` , `项目` , `UID` FROM `Probs`
WHERE `时间` =
( SELECT MIN(`时间`) FROM `Probs` WHERE `项目` like '%无相之水%' and day(参与时间)=day(now()) )
and `项目` like '%无相之水%'
select t.*, min(t.时间) from 表名 t group by t.项目
SELECT ID
, 项目
,昵称
, 时间
, 项目
, UID
FROM Probs
WHERE 时间
= ( SELECT MIN(时间
) FROM Probs
WHERE 项目
like '%无相之水%' and day(参与时间)=day(now()) )
and 项目
like '%无相之水%'
and day(参与时间)=day(now())