用户在类别中发布的代码块

我们有时需要从其他内部团队那里搜索特定信息。此查询对我们查找所需内容非常有用。

-- [params]
-- user_id :user
-- int_list :category_ids = 0

SELECT 
    p.id AS post_id,
    p.raw, 
    p.created_at, 
    p.topic_id  
FROM posts p
WHERE p.user_id = :user
  AND p.topic_id IN (
    SELECT t.id
    FROM topics t
    WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
      AND t.archetype <> 'private_message'
      )
  AND p.raw LIKE '%```%'
5 个赞

我不确定您是否正在导出这些数据,但如果您在数据浏览器中使用它,我喜欢依赖的所有用户查找技巧之一是 user_id 参数,它为您提供了一个超级简单的查找输入框:

-- [params]
-- user_id :user
-- int_list :category_ids = 0

SELECT 
    p.id AS post_id,
    p.raw, 
    p.created_at, 
    p.topic_id  
FROM posts p
WHERE p.user_id = :user
  AND p.topic_id IN (
    SELECT t.id
    FROM topics t
    WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
      AND t.archetype <> 'private_message'
      )
  AND p.raw LIKE '%```%'

这个变体还包括 AS post_id 魔术,将 p.id 转换为屏幕结果中可用的链接,并扩展了类别参数以允许所有或多个类别(0 表示所有,或逗号分隔的列表表示多个。例如 4, 5, 6)。

这个方法似乎相对快速,但也有这个技巧用于搜索关键字:

4 个赞
  1. 那个用户 ID 选择器太棒了!
  2. 有类别选择器吗?

我已经用这个更新了我原来的查询!我实际上使用了 Discourse AI 的 SQL 生成器来帮助我完成这个任务。这真是一次难以置信的体验,每周可能为我节省了 4-5 个小时。

3 个赞

您也可以根据需要将其扩展为处理用户列表版本,以支持多个用户。例如:

-- [params]
-- user_list :users

SELECT
    id AS user_id,
    created_at
FROM users
WHERE id IN (:users)

这里有更多关于其他一些神奇参数的信息 - Utilizing Parameters in Data Explorer Queries

有一个 category_idgroup_id 参数,但它们不像 user_id 那样拥有选择框(它们通过输入名称来工作,然后会自动转换为 ID)。尽管如此,它们仍然非常有用。

(另外,还有另一个通常有用的信息可以帮助改进一些 AI 辅助查询 - https://meta.discourse.org/t/common-discourse-data-tips/276148)

1 个赞