我有许多表格如下:
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)
表格中选择value
和meta
列。这确实会给我最近的created_on
,但value
不正确。
答案 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
,但您可以将其替换为您想要的任何内容。