我有两个表,evt和content。content是指向evt的链接,抛出content_evt_fk列(为了更简单,您可以将博客数据库的evt替换为文章,将content替换为注释)。
我试图做的是在一个查询中包含evt id、evt名称、与其相关的内容数量,以及最后一个插入的与该evt相关的内容的id和文本。
这是代码:
SELECT
`evt`.`evt_id`,
`evt`.`name`,
`content`.`content_id`,
`content`.`content_text`,
count(*) as `evt_cont`
FROM
`t_evt` as `evt`,
`t_content` AS `content`
WHERE
`evt`.`evt_id` = `content`.`content_evt_fk`
group by `evt_id`
ORDER BY `content`.`content_id` DESC
问题是发送的content_text不是上次插入的内容,而是第一行插入的内容。我试着在查询中加入一些Max(),但无济于事。
有线索吗?
EDIT:数据样本
假设我有一个名为";口袋";以及3个相关内容,按此顺序输入("1-蛋糕"、"2-巧克力"、"3-种子")。
我查询的结果是
evt_id name content_id content_text evt_cont
149 pocket 112 1-cake 3
我想要什么:
evt_id name content_id content_text evt_cont
149 pocket 115 3-sweets 3
我不使用MySql,所以可能有更好的方法可以做到这一点。最简单的方法是通过键(此处为content_evt_fk)将派生的max表(表示兴趣顺序的列,此处为content_id)连接到过滤掉除最后一个条目之外的所有条目的原始表。
SELECT
evt.evt_id,
evt.name,
content.content_id,
content.content_text
FROM t_evt as evt
INNER JOIN t_content AS content
ON evt.evt_id = content.content_evt_fk
INNER JOIN
(
select content_evt_fk, max(t_content.content_id) content_id
from t_content
group by content_evt_fk
) last_content
ON content.content_id = last_content.content_id
-- This is not necessary here, but if you do this sort of thing on
-- columns other than id, you will have to join this part too
and content.content_evt_fk = last_content.content_evt_fk