从多个连接表中选择最新记录

时间:2015-12-01 02:09:17

标签: mysql sql

我有许多表格如下:

resource
---------
id
name

meta1
---------
id
resource_id
value
created_on

meta2
---------
id
resource_id
value
created_on

meta3
---------
id
resource_id
value
created_on

如何使用mysql从给定资源ID的每个value表中获取包含最新meta的结果集?

我尝试在resource_id上将所有表格加在一起,然后从每个max(created_on)表格中选择valuemeta列。这确实会给我最近的created_on,但value不正确。

1 个答案:

答案 0 :(得分:2)

您可以通过一系列交叉连接来完成结果:

SELECT id, t1.value, t2.value, t3.value
FROM resource r
CROSS JOIN
(
    SELECT value
    FROM meta1 m1
    WHERE m1.resource_id = 10
    ORDER BY created_on DESC
    LIMIT 1
) t1
CROSS JOIN
(
    SELECT value
    FROM meta2 m2
    WHERE m2.resource_id = 10
    ORDER BY created_on DESC
    LIMIT 1
) t2
CROSS JOIN
(
    SELECT value
    FROM meta3 m3
    WHERE m3.resource_id = 10
    ORDER BY created_on DESC
    LIMIT 1
) t3
WHERE r.id = 10

我在上面的查询中使用了资源ID 10,但您可以将其替换为您想要的任何内容。