大家好,我在 Data Explorer 中编辑和运行查询时注意到一个奇怪的行为。我正尝试使用 WHERE 和 IN 操作符来仅选择来自特定类别主题的帖子:
WHERE
t.category_id IN (420, 421, 426)
但是,我不确定 WHERE 条件是否按预期工作:如果我针对这些类别创建之前的时期运行查询,它只会列出所有主题,而忽略类别。此外,IN 操作符的颜色没有改变,我想知道 Data Explorer 是否将其识别为操作符:
有什么想法是什么原因吗?非常感谢!
嗯。 
我昨晚用了一个非常相似的查询,对我来说效果很好。
您能分享一下您的完整查询,以便我们看看是否还有其他问题吗?
1 个赞
当然,这是。该查询用于检索生成 Gource 可解析的自定义日志文件所需的信息。请参阅:Custom Log Format · acaudwell/Gource Wiki · GitHub
-- 此查询检索最新帖子的列表,
-- 以及相关的用户信息和主题详细信息。
-- 结果按创建日期升序排序。
-- 选择的字段如下:
-- timestamp:帖子创建的时间戳(ISO 8601 或 Unix 时间戳)。
-- username:创建帖子的用户的用户名。
-- type:硬编码值 'A',表示操作类型(在此情况下为 'Added')。
-- topic:帖子所属主题的 ID。
-- post_number:帖子在其主题内的唯一编号。
-- reply_to_post_number:此帖子回复的帖子编号(如果有)。
-- raw:帖子的内容,限制为前 30 个字符。
-- category_id:主题所属类别的 ID。
SELECT
p.created_at as timestamp,
u.username,
'A' as type,
p.topic_id as topic,
p.post_number as post_number,
p.reply_to_post_number as reply_to_post_number,
SUBSTRING(p.raw, 1, 30) AS raw,
t.category_id
FROM
posts p
JOIN
users u ON p.user_id = u.id
JOIN
topics t ON p.topic_id = t.id
WHERE
t.category_id IN (420, 421, 426)
AND t.created_at > '2022-01-01'
ORDER BY
p.created_at ASC
LIMIT 1000
1 个赞
一切看起来都井井有条。
当我使用相同的 AND t.created_at > '2022-01-01' 针对我们创建的大约 10 天前的新文档类别运行它时,我没有看到任何来自这些类别之外的数据被提取进来(但有很多小的操作帖子,您可能希望根据您的用例进行过滤)。完全不使用 AND t.created_at > '2022-01-01' 运行它也只提取了这些类别中的数据。
2 个赞