# 在 Data Explorer 中使用 IN 运算符

**URL:** https://meta.discourse.org/t/using-the-in-operator-in-data-explorer/310503
**Category:** Data & reporting
**Tags:** sql-query
**Created:** [2024年六月4日 12:27 UTC](https://meta.discourse.org/t/using-the-in-operator-in-data-explorer/310503 "2024-06-04T12:27:04Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![albertocottica](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/albertocottica/32/119622_2.png) [@albertocottica](https://meta.discourse.org/u/albertocottica)
#### Post date: [2024年六月4日 12:27 UTC](https://meta.discourse.org/t/using-the-in-operator-in-data-explorer/310503/1 "2024-06-04T12:27:04Z")

</div>

大家好，我在 [Data Explorer](https://meta.discourse.org/t/32566?silent=true) 中编辑和运行查询时注意到一个奇怪的行为。我正尝试使用 `WHERE` 和 `IN` 操作符来仅选择来自特定类别主题的帖子：

```sql
WHERE
    t.category_id IN (420, 421, 426)

```

但是，我不确定 `WHERE` 条件是否按预期工作：如果我针对这些类别创建之前的时期运行查询，它只会列出所有主题，而忽略类别。此外，`IN` 操作符的颜色没有改变，我想知道 [Data Explorer](https://meta.discourse.org/t/32566?silent=true) 是否将其识别为操作符：

 ![图片显示了几行 SQL 代码，对一个表执行 JOIN 操作，并根据类别 ID 是否属于特定值集来过滤结果。 (由 AI 添加字幕)](https://global.discourse-cdn.com/meta/original/4X/4/7/b/47bec1d60bdc49a68690db27cd42433a9affce63.png)

有什么想法是什么原因吗？非常感谢！

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2024年六月4日 12:30 UTC](https://meta.discourse.org/t/using-the-in-operator-in-data-explorer/310503/2 "2024-06-04T12:30:05Z")

</div>

嗯。 🤔

我昨晚用了一个非常相似的查询，对我来说效果很好。

您能分享一下您的完整查询，以便我们看看是否还有其他问题吗？

---

<div class="post-metadata">

### Author: ![albertocottica](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/albertocottica/32/119622_2.png) [@albertocottica](https://meta.discourse.org/u/albertocottica)
#### Post date: [2024年六月4日 13:14 UTC](https://meta.discourse.org/t/using-the-in-operator-in-data-explorer/310503/3 "2024-06-04T13:14:39Z")

</div>

当然，这是。该查询用于检索生成 Gource 可解析的自定义日志文件所需的信息。请参阅：[Custom Log Format · acaudwell/Gource Wiki · GitHub](https://github.com/acaudwell/Gource/wiki/Custom-Log-Format)

```plaintext
-- 此查询检索最新帖子的列表，
-- 以及相关的用户信息和主题详细信息。
-- 结果按创建日期升序排序。

-- 选择的字段如下：
-- 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

```

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2024年六月4日 13:40 UTC](https://meta.discourse.org/t/using-the-in-operator-in-data-explorer/310503/4 "2024-06-04T13:40:07Z")

</div>

一切看起来都井井有条。

当我使用相同的 `AND t.created_at > '2022-01-01'` 针对我们创建的大约 10 天前的新文档类别运行它时，我没有看到任何来自这些类别之外的数据被提取进来（但有很多小的操作帖子，您可能希望根据您的用例进行过滤）。完全不使用 `AND t.created_at > '2022-01-01'` 运行它也只提取了这些类别中的数据。
