请教一个一个稍微有些复杂的 sql 查询

2015-06-05 13:15:22 +08:00
 colorsand

有两张表,文章表(id,标题,内容,发布日期)和评论表(id,文章id,内容,发布日期)。

需要要查询再5月份发布的文章当中,到今天为止超过15天没有新评论的文章,sql语句怎么写?在thinkphp怎么实现这种关联查询?

1750 次点击
所在节点    问与答
5 条回复
bin456789
2015-06-05 16:14:09 +08:00
mssql的语句,可以参考下,至于thinkphp那种表达式就不清楚了

SELECT *
FROM dbo.Articles
WHERE AddTime >= '2015-5-1'
AND AddTime < '2015-6-1'
AND tId NOT IN ( SELECT tId
FROM dbo.Comment
WHERE AddTime > GETDATE() - 15 )
colorsand
2015-06-05 16:28:40 +08:00
@bin456789 感谢你的回复,一篇文章可能有多条评论,这个语句能保证AddTime是最后那条评论的时间吗?
bin456789
2015-06-05 16:30:54 +08:00
@colorsand
SELECT tId
FROM dbo.Comment
WHERE AddTime > GETDATE() - 15
这个子查询是查出15天内有评论的文章Id,所以不用管是不是最后那条评论
warden2h
2015-06-05 16:34:46 +08:00
join 和not in 都可以
colorsand
2015-06-06 14:06:27 +08:00
@bin456789 不知道是不是性能问题,执行这条语句,数据库直接卡死了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/196311

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX