2017-04-09 34 views
0

我的客戶記錄跨越多個表格。並且每個表都有更新的datetimestamp列。需要查找跨越多個表的客戶記錄的最新時間戳記

例如: Customer表 - 已如姓名,用戶名,出生日期,.. 地址表基本信息 - 工作地址,家庭住址 電話表,功能表等。

所以當地址獲得更新/添加其他表記錄不會更新。

在這裏,我需要找到當一個特定的客戶已經得到了更新,它可以獨自地址,電話數據本身..這樣..

我的SQL需要提供我 - 對於給出的最新更新datetimestamp顧客。

我被加入所有這些表檢查和使用最多(每個表的更新datetimestamp列)..

,但在它的結束,我只需要最新的日期..

莫非你提供我將有助於實現這一目標的SQL?

注意:這是針對DB2的。

+0

編輯您的問題,並提供樣本數據和預期結果。你想要返回的東西並不明顯。 –

回答

1

您應該爲每個表格選擇日期並將結果合併到一起。然後你可以在聯盟中取最大值。日期列不需要具有相同的名稱,但它們需要是相同的數據類型。

而是工會,大多數SQL數據庫也有一個「UNION ALL」這使複製和運行速度更快。

0
--if you want the table name with the max timestamp 

select * from 
(
select 'TABLE1' as TABLENAME, MAX(datetimestampcolumn) as datetimestampcolumn from TABLE1 
union all 
select 'TABLE2' as TABLENAME, MAX(datetimestampcolumn) as datetimestampcolumn from TABLE2 
union all 
select 'TABLE3' as TABLENAME, MAX(datetimestampcolumn) as datetimestampcolumn from TABLE3 
) tmp 
order by datetimestampcolumn desc 
fetch first rows only 


--If not necessary to know the table name 

select max(datetimestampcolumn) as datetimestampcolumn 
from 
(
select datetimestampcolumn from TABLE1 
union all 
select datetimestampcolumn from TABLE2 
union all 
select datetimestampcolumn from TABLE3 
) tmp