【发布时间】:2014-06-09 13:20:46
【问题描述】:
这个问题与我之前的问题略有不同:Get the latest data comparing datetime fields from two table
我有两个结构相同的表,如下所示:
表:用户
+----+--------+--------------+----------------------+
| ID | Name | Password | LastUpdateTime |
+----+--------+--------------+----------------------+
| 1 | abu | abu123NEW | 2014-06-04 14:55:06 |
| 2 | john | john123 | 2014-06-04 14:58:22 |
| 3 | shane | shane123 | 2014-06-04 15:02:06 |
| 4 | marie | marie123 | 2014-06-04 15:00:06 |
| 5 | mike | mike123NEW | 2014-06-04 15:01:32 |
| 6 | kiron | kiron123NEW | 2014-06-04 15:05:46 |
| 8 | Bruce | bruce123 | 2014-06-04 15:07:11 |
+----+--------+--------------+----------------------+
表:user_k
+----+--------+--------------+----------------------+
| ID | Name | Password | LastUpdateTime |
+----+--------+--------------+----------------------+
| 1 | abu | abu123 | 2014-06-04 14:53:06 |
| 2 | john | john123NEW | 2014-06-04 14:59:48 |
| 3 | shane | shane123NEW | 2014-06-04 15:00:06 |
| 4 | marie | marie123NEW | 2014-06-04 15:03:17 |
| 5 | mike | mike123 | 2014-06-04 15:00:36 |
| 6 | kiron | kiron123 | 2014-06-04 15:02:18 |
| 7 | Dan | dan123 | 2014-06-04 15:09:46 |
+----+--------+--------------+----------------------+
现在我需要从这两个表中获取最新数据(通过“LastUpdateTime”),如下所示:
+----+--------+--------------+----------------------+
| ID | Name | Password | LastUpdateTime |
+----+--------+--------------+----------------------+
| 1 | abu | abu123NEW | 2014-06-04 14:55:06 |
| 2 | john | john123NEW | 2014-06-04 14:59:48 |
| 3 | shane | shane123 | 2014-06-04 15:02:06 |
| 4 | marie | marie123NEW | 2014-06-04 15:03:17 |
| 5 | mike | mike123NEW | 2014-06-04 15:01:32 |
| 6 | kiron | kiron123NEW | 2014-06-04 15:05:46 |
| 7 | Dan | dan123 | 2014-06-04 15:09:46 |
| 8 | Bruce | bruce123 | 2014-06-04 15:07:11 |
+----+--------+--------------+----------------------+
我现在拥有的:
select
u.id,
u.name,
if(u.LastUpdateTime >= k.LastUpdateTime, u.password, k.password) as password,
greatest(u.LastUpdateTime, k.LastUpdateTime) as LastUpdateTime
from
user u
inner join user_k k on u.id = k.id
但这只会获取两个表都可用的那些记录... 我还需要表中任何一个表中存在的数据。另外,我担心大量数据的查询性能。
这里是 sqlfiddle
PS:除了名称和密码之外,两个表中还有十几个字段(列)。我避免使用它们只是为了简化问题。
【问题讨论】:
-
期望的结果是什么样的,并且(虽然这完全取决于您)我希望您提供适当的 DDL 和/或 sqlfiddle - 没有不必要的列。
-
@Strawberry :我在我的问题中添加了一个示例 sqlfiddle... :)
-
那么,您想要每个 id 的最新行吗?