我有以下查询https://data.stackexchange.com/stackoverflow
SELECT TOP 10 * FROM Posts
WHERE PostTypeId = 2
AND CreationDate > '2022-05-06'
AND CommentCount = 3
AND Tags LIKE '%php%'
ORDER BY CreationDate DESC
我试图得到答案,今天张贴在php标签,也有3个评论。
但我收到的却是:
在51274 ms内返回0行
我确信SE Data Explorer并不总是最新的,但问题似乎在其他地方。Tags
列是null
列的答案。
如果您想获得标签,您必须查询您可以通过ParentId
列获得的问题。
使用自连接:
SELECT TOP 10 p1.*
FROM Posts p1 INNER JOIN Posts p2
ON p2.Id = p1.ParentId
WHERE p1.PostTypeId = 2
AND p2.Tags LIKE '%php%'
AND p1.CommentCount = 3
-- AND <your date condition here>
ORDER BY p1.CreationDate DESC
首先,您的查询似乎非常选择性。给我所有PHP问题的答案,从今天的答案有正好3个评论?我不知道你能不能找到很多这样的东西。也许如果您将标准更改为CommentCount >= 3
(并以正确的方式跟踪标签),但即使有了这些修复,对答案的评论也不会经常达到那么高(或停留很长时间)。
第二,SEDE每周更新,在星期日更新。请参阅这个问题、这个问题(它链接到这个查询,您可以使用这个查询监视状态)和这个问题。(碰巧就在这个周末,正常的刷新失败了,但这不会导致这个特定的问题。)
SEDE刷新是一项广泛的操作,因为数据以各种方式进行了转换(简化了结构以使查询更容易,并且对数据进行了清理以删除任何PII)。所以在星期六,不,你不会在那里找到今天的任何帖子(好吧,在前一个星期天之后)。
你可以检查这个查询,看看为什么你的WHERE
子句也太有选择性了:
SELECT MAX(CreationDate) FROM Posts;
一旦你选择了日期条件,你可以修复查询中的其他问题。