获取内容的最早日期并检查第二张表中的相同数据

时间:2018-06-29 14:35:14

标签: mysql

作为我正在从事的项目的一部分,我一直在一个网站上工作,用户可以在该网站上添加/编辑不同页面上的内容。

当前,当某人将内容部分添加到页面时,它会被添加到带有“日期修改”列和唯一的contentID列的“内容”表中。但是,当有人去编辑此条目时,我将在“ content”表中获取该ContentID的信息,并使用此信息在“ changehist”表中创建一个新条目(以跟踪内容条目的更改历史记录)。之后,我将使用新内容及其编辑日期更新内容表。

“我的内容”表包含以下列:
ContentID, Heading, Content, DateModified, UserID

ChangeHist表包含以下内容:
HistID, ContentID, Heading, Content, DateModified, UserID

我被要求做的是有一个部分,显示最近添加的内容(过去3个星期),但不显示最近更新的内容(一年前添加的内容,但上周更新了)。我目前正在使用以下查询来执行此操作:

SELECT content.* 
FROM content 
WHERE 
   (NOT EXISTS 
      (SELECT 1 
      FROM changehist 
      WHERE  changehist.ContentID = content.ContentID)) 
AND content.DateModified > NOW() - INTERVAL 3 WEEK 
ORDER BY content.DateModified DESC

我的问题是,如果在3个小时前添加内容,并在2个小时前对内容进行了修改,并且使用当前查询,则该条目不会显示在MYSQL结果中。

是否有一种方法可以在单个查询中获取此信息,还是我必须使用两个单独的查询(每个表一个),然后将两个结果合并到php中?

1 个答案:

答案 0 :(得分:0)

您必须添加一个条件才能获取所有新插入的内容。

SELECT 
    A.*
FROM 
    (SELECT ContentID, Heading, Content, DateModified, UserID
    FROM Content
    WHERE DateModified > NOW() - INTERVAL 3 WEEK
    UNION ALL
    SELECT ContentID, Heading, Content, DateModified, UserID
    FROM ContentHist 
    WHERE DateModified > NOW() - INTERVAL 3 WEEK) A
ORDER BY A.UserID, A.ContentID, A.DateModified DESC;