CREATE TABLE public.server_status (
id varchar(255) NOT NULL,
creat_time timestamp NULL,
is_online varchar(255) NOT NULL,
msg varchar(255) NULL,
node_id varchar(255) NOT NULL,
online_update_time timestamp NULL,
server_id varchar(255) NOT NULL,
server_level varchar(255) NULL,
user_identify varchar(255) NOT NULL,
CONSTRAINT xviid_server_status_pkey PRIMARY KEY (id)
现在要根据node_id和server_id查询最新的记录时间:
查询每个服务的每个节点的最新记录。
select x
from xviid_server_status x,
(select server_id,node_id, max(creat_time) creat_time from xviid_server_status group by server_id, node_id) s
where x.server_id = s.server_id and x.node_id = s.node_id and x.creat_time = s.creat_time
查询指定服务在每个节点的最新记录:
select x
from xviid_server_status x,
(select server_id,node_id, max(creat_time) creat_time from xviid_server_status where server_id='aaaaa' group by server_id, node_id) s
where x.server_id = s.server_id and x.node_id = s.node_id and x.creat_time = s.creat_time
查询指定服务在指定节点的最新记录:
select x
from xviid_server_status x,
(select server_id,node_id, max(creat_time) creat_time from xviid_server_status where server_id='aaaaa' and node_id='bbbbb' group by server_id, node_id) s
where x.server_id = s.server_id and x.node_id = s.node_id and x.creat_time = s.creat_time
以上的语句在数据库可以查询出数据的情况下没有任何问题。但是当语句查询结果为空时,就会直接返回表的引用名称 x。
需要改select x 为 select x*。才能在查询结果为空时,返回空。
查询每个服务的每个节点的最新记录。
select x.*
from xviid_server_status x,
(select server_id,node_id, max(creat_time) creat_time from xviid_server_status group by server_id, node_id) s
where x.server_id = s.server_id and x.node_id = s.node_id and x.creat_time = s.creat_time
查询指定服务在每个节点的最新记录:
select x.*
from xviid_server_status x,
(select server_id,node_id, max(creat_time) creat_time from xviid_server_status where server_id='aaaaa' group by server_id, node_id) s
where x.server_id = s.server_id and x.node_id = s.node_id and x.creat_time = s.creat_time
查询指定服务在指定节点的最新记录:
select x.*
from xviid_server_status x,
(select server_id,node_id, max(creat_time) creat_time from xviid_server_status where server_id='aaaaa' and node_id='bbbbb' group by server_id, node_id) s
where x.server_id = s.server_id and x.node_id = s.node_id and x.creat_time = s.creat_time
FROM 表名;
说明:SELECT关键字后的字段名可换成*,*代表查询数据表中的所有(字段)的内容。 所有SELECT语句必须有SELECT子句和FROM子句,书写时可以将两个字句写在一行中。
主要子句的语法
--查询时间最大值
select create_by,
isnull((select max(create_time) from a_task_carry),'') 最大的时间,
create_time
from a_task_carry
--查询数据
select task_id,repairs_id,pra_completion_date,
isnull((select max(accomplish_time) from as_task
where as_repairs.repairs_id = as_task.repairs_id),'')
from as_repairs
where repairs
select (case when c.a>c.b then c.a else c.b end) as MaxTime from (SELECT MAX(字段1) as a ,MAX(字段2) as b FROM [表] ) as c
执行完成之后得到最大的值
转载于:https://www.cnblogs.com/cfss...
DateTable.Select()中查找datetime为空的数据
在网上找了好久,也试了很多,一直都是空,好不容易才成功的运行了,记录一下。
解释一下,就是数据库的数据类型是datetime,数据为null,我要查找到这个数据。
从数据库中查找到该表,保存到DateTable中,用select()经行筛选。
thedate是这个表格中对应时间的这一列的列名。
DateRow[] rows = myDateTable.Select( $"thedate is NULL" );
两个表,投递记录表和封发开拆记录表,现在想知道投递日期距最后一次封发日期天数分布情况。
对这个需求,需要先查询出投递明细,同时要知道对应的邮件最后一次封发情况,如机构、日期等
2、明细查询
考虑到一天可能封发多次,所以取日期和时间都是最大的那条,语句如下:
select *
from tb_evt_bag_mail_rel