【发布时间】:2014-07-27 11:16:36
【问题描述】:
我有两个结构相同的表,如下所示:
表:用户
+----+--------+--------------+----------------------+
| 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 |
+----+--------+--------------+----------------------+
表: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 |
+----+--------+--------------+----------------------+
现在我需要从这两个表中获取最新数据(通过“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 |
+----+--------+--------------+----------------------+
我尝试过的:
SELECT uk.* FROM user AS ua, user_k AS uk
WHERE uk.ID = ua.ID AND uk.LastUpdateTime > ua.LastUpdateTime
UNION
SELECT ua.* FROM user AS ua ,user_k AS uk
WHERE uk.ID = ua.ID AND uk.LastUpdateTime < ua.LastUpdateTime
我不确定这是否合适。此外,我担心大量数据的查询性能。有没有更好的方法呢?
PS:除了名称和密码之外,两个表中还有十几个字段(列)。我避免使用它们只是为了简化问题。
【问题讨论】:
-
您需要在两个表之间优化
UNION,但按LastUpdateTime排序? -
@Kabulan0lak.. 是的,我需要最新数据,但不确定 UNION 在这种情况下是否是最好的..
-
为什么不呢?我认为在这种情况下使用
UNION ALL会既快速又干净。 -
哦,抱歉,我没有意识到这两个表中的用户是相同的。因此,
UNION非常错误,是的。