表如下:
name time
XXXXXXXX 2021-09-06
XXX发布XXX 2021-09-06
XX发布XXXX 2021-09-05
XXXXXXX 2021-09-04
mysql数据库:
如果name包含发布字样,取最新的包含发布的数据,如果name不包含发布字样,取最新time的数据
即:
目前需要SQL返回XXX发布XXX 2021-09-06这条数据。
如果第二条第三条数据不存在则返回XXXXXXXX 2021-09-06这条数据
用sql实现的话,你做个辅助列承接你说的【含不含发布】这个逻辑,,然后再排下序,排在第一条的数据就是满足你逻辑的数据。
SELECT
t.*
,row_number() over(ORDER BY name_group,time DESC)ranker
FROM
(
select
case when name like '%发布%' then 1 else 2 end as name_group
,name
,time
FROM TABLE
)t
试试
SELECT NAME,MAX(TIME) FROM TABLE group BY NAME
if( find("发布",sql("JDBC3","select name from table where name like '%发布%'",1,1) )>0 ,sql("JDBC3","select max(time) from table where name like '%发布%'",1,1) ,sql("JDBC3","select max(time) from table where name not like '%发布%'",1,1) )