在 mySQL 中,我如何 select 跨多个表的每个 client_id 最近的 time_stamp?

In mySQL, how can I select the most recent time_stamp for each client_id across multiple tables?

我的数据库中有各种 table,每个 table 对应一种特定类型的消息。各种客户端会定期将消息保存到数据库中,但根据发生的情况,它们可能会将一条或多条消息保存到一个或多个 table 中。有4个table。
每个 table 的格式如下:

client_id | time_stamp | var1 | var2 | var3 | ...

其中 client_idVARCHAR 字段,time_stamp 是格式 YYYY-MM-DD hh:mm:ss 中的 SQL TIMESTAMP。每个 table 的 var 是不同的。

还有一个客户 table,详细信息如下:

id | name | type | etc....

消息 table 上的 client_id 对应于客户端 table 上的 idid 也是客户端的主键 table.

我想查询数据库以查找所有 table 中每个客户的最新 time_stamp。所以在我的结果中,我应该得到 client_idtime_stamp 最后一次联系服务器的列表,如下所示:

id | time_stamp
1  |  12/2/15...
2  |  11/2/15...
...etc  

我以为我可以通过连接来做到这一点,但现在我明白了,事实并非如此。我的加入语句给了我一个 client_id 和每个 table 中每个 time_stamp 的列;此外,结果,它只为已将至少一条消息保存到所有 table 的客户端返回一行。
所以我显然离题了。 谁能帮我吗?

我的错误SQL语句如下:

SELECT clients.id
     , msg_type_1.time_stamp
     , msg_type_2.time_stamp
     , msg_type_3.time_stamp
     , msg_type_4.time_stamp 
  FROM devices 
  JOIN msg_type_1 
    ON msg_type_1.client_id = clients.id 
  JOIN msg_type_2 
    ON msg_type_2.client_id = clients.id 
  JOIN msg_type_3 
    ON msg_type_3.client_id = clients.id 
  JOIN msg_type_4 
    ON msg_type_4.client_id = clients.id 
 GROUP 
    BY id
select client_id, max(time_stamp)
from 
  (select client_id, max(time_stamp) as time_stamp
  from table 1
  group by client_id
  union
  select client_id, max(time_stamp) as time_stamp
  from table 2
  group by client_id
  union
  select client_id, max(time_stamp) as time_stamp
  from table 3
  group by client_id
  union
  select client_id, max(time_stamp) as time_stamp
  from table 4
 group by client_id)
group by client_id