相关文章推荐
阳刚的烤地瓜  ·  sql ...·  1 周前    · 
鼻子大的红金鱼  ·  hive 排序 ...·  6 天前    · 
风流的足球  ·  ArcGis ...·  7 月前    · 
威武的灯泡  ·  Docker 中的 PHP ...·  1 年前    · 
可爱的伏特加  ·  pc android emulator ...·  1 年前    · 
select * from table t1
where not exists(select 1 from table t2
                 where t1.no=t2.no and t1.name=t2.name 
                 and convert(char(10),t1.add_time,120) = convert(char(10),t2.add_time,120)
                 and t2.add_time>t1.add_time)

其中sql server中截取时间的方法:

使用convert函数:

select convert(char(10),GetDate(),120) as date (得到的时间为:2018-12-12)

其中函数中的第3个参数就是用来设置日期类型数据的显示样式的。

100   mm dd yyyy

101   mm/dd/yyyy

102   yyyy.mm.dd

103   dd/mm/yyyy

106   dd mm yyyy

108   hh:mi:ss(时间)

111   yyyy/mm/dd

112   yyyymmdd

120   yyyy-mm-dd

table与table自己对比,不存在比自己小的时间则为时间最大的那条。SQL server:select * from table t1where not exists(select 1 from table t2                 where t1.no=t2.no and t1.name=t2.name and convert(... select max(aa.create_time) as MaxcreateTime, aa.name from (select convert(create_time,CHAR(10)) datetemp, a.name,a.create_time from user a group by aa.datetemp, aa.name 我们的需求是统计每天最后一次的变动 记录 ,而不仅仅是变动时间,所以这里仅仅使MAX和GROUP BY是没有办法达到我们的需求的。 这个时候,我们就可以使用GROUP_CONCAT和GROUP BY。 GROUP_CONCAT 作用:将GROUP产生的同一个分组 的值连接起来,返回一个字符串。 语法:GROUP_CONCAT( [..
今天在工作 ,遇到一个业务:根据某个 字段 去重查询 最新 记录 ,于是建了一张测试 (以下使用postgreSQL建 语句),并 记录 下三种不同类型数据库下的查询方式(oracle/postgreSQL/mysql) DROP TABLE IF EXISTS "public"."t_group_member"; CREATE TABLE "public"."t_group_member" ( "id" int4 NOT NULL, "group_id" varchar(255) COLLATE "pg_
要根据时间分组取每组的最后一条 记录 ,可以使用子查询和 `GROUP BY` 语句来实现。具体操作步骤如下: 1. 写一个子查询语句,用于查询每个分组的最后一个 记录 。在子查询 ,按照需要分组的 字段 和时间 字段 进行排序,然后使用 `GROUP BY` 语句对需要分组的 字段 进行分组,最后使用 `MAX` 函数 获取 每个分组 时间 字段 的最大值,也就是最后一条 记录 的时间。 SELECT group_column, MAX(time_column) AS max_time FROM table_name GROUP BY group_column; 其 ,`group_column` 是需要分组的 字段 名,`time_column` 是 示时间的 字段 名,`table_name` 是需要查询的 名。 2. 将上述子查询作为一个临时 ,并将其与原 进行连接查询,以 获取 每个分组 时间最大的 记录 的完整信息。具体来说,可以使用以下 SQL 语句: SELECT t1.* FROM table_name t1 INNER JOIN (SELECT group_column, MAX(time_column) AS max_time FROM table_name GROUP BY group_column) t2 ON t1.group_column = t2.group_column AND t1.time_column = t2.max_time; 这个语句会先执行子查询语句, 获取 每个分组 时间最大的 记录 的信息,并将这些信息保存到一个临时 `t2` 。然后,使用 `INNER JOIN` 语句将原 `table_name` 与临时 `t2` 进行连接查询,以 获取 每个分组 时间最大的 记录 的完整信息。在连接查询 ,需要使用 `ON` 子句来 指定 连接条件,即 `group_column` 和 `time_column` 的值都相等。 注意,在上述 SQL 语句 ,`t1.*` 示需要查询的所有 字段 ,如果需要查询特定的 字段 ,可以将 `*` 替换为需要查询的 字段 名。