2015-06-28 217 views
0

不同的表中有不同的日期时间字段,我必须选择所有日期时间字段中的最新日期时间字段。的表是:从不同的日期时间字段中选择最新的日期时间

Question 
-------- 
askedby 
questionType 
lastupdated 

Document 
---------- 
submittedBy 
documentType 
lastupdated 

Instruction 
----------- 
submittedBy 
instructionType 
lastupdated 

试图启动与

SELECT Question.lastupdated,Document.lastupdated,Instruction.lastupdated 
FROM Question,Document,Instruction 
WHERE lastupdated=(select max(lastupdated)) 
ORDER BY lastupdated DESC 

如果LASTUPDATED表中的值是:

Question table: 2015-06-28 07:00:00 
Document table: 2015-06-28 07:30:00 
Instruction table: 2015-06-28 08:00:00 

然后从Instruction表中的值应选择,像2015-06-28 08:00:00

在这里,我必须选择最新的拉斯来自三个数据库的tupdated列。我是SQL查询的新手,不确定如何开始。

+0

你到目前为止尝试了什么? –

+0

你会期望什么结果?可以编辑问题并添加样本预期输出? – jpw

+0

抱歉不清楚我的问题。 – trx

回答

0

由于它看起来像只想从三个分离集合中提取最后一个日期,所以一个简单的选项将对每个表格使用查询,并使用union all从三个结果中制作一个集合并将max应用于该集合,像这样:

SELECT MAX(lastupdated) AS max_lastupdated 
FROM 
(
    SELECT MAX(lastupdated) lastupdated FROM Question 
    UNION ALL 
    SELECT MAX(lastupdated) lastupdated FROM Document 
    UNION ALL 
    SELECT MAX(lastupdated) lastupdated FROM Instruction 
) A 

其实你如果索引支持甚至都不需要选择三个select语句的最大值,刚开LASTUPDATED应该够用了,虽然上面的查询可能会更快:

SELECT MAX(lastupdated) AS max_lastupdated 
FROM 
(
    SELECT lastupdated FROM Question 
    UNION ALL 
    SELECT lastupdated FROM Document 
    UNION ALL 
    SELECT lastupdated FROM Instruction 
) A 

Sample SQL Fiddle

+0

这是什么? – trx

+0

@trx它是派生表的结果(括号内的查询结果)的别名/名称。 – jpw

相关问题