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.*`
表
示需要查询的所有
字段
,如果需要查询特定的
字段
,可以将 `*` 替换为需要查询的
字段
名。