Ruby 【AI】让 AI 理解我的数据库,根据用户的提问自动生成相关 SQL 语句,有什么好的方案么?

528070506 · January 16, 2026 · Last by lookforRuby replied at January 17, 2026 · 49 hits

AI 刚才来的时候,当时尝试训练和提示词等方式试过,但是开发成本和时间 太多了,后续就一直没有搞 大家现在有什么好的方案推荐么?

我打算用多 Agent 协作 + 知识库的方式进行处理

是指这样吗?

编写 sql, 查询 3 个月内,评论数最多的帖子。

我需要先了解一下 ruby-china/homeland 项目的数据库结构,特别是帖子和评论相关的表结构,然后才能编写准确的 SQL 查询。根据数据库结构,我可以看到 homeland 项目使用 PostgreSQL 数据库,其中:

  • topics 表存储帖子信息
  • replies 表存储评论/回复信息
  • topics 表中有 replies_count 字段记录评论数量
  • topics 表中有 created_at 字段记录创建时间

以下是查询 3 个月内评论数最多的帖子的 SQL:

SELECT 
    id,
    title,
    replies_count,
    created_at,
    user_id,
    node_id
FROM topics
WHERE created_at >= NOW() - INTERVAL '3 months'
    AND deleted_at IS NULL
ORDER BY replies_count DESC
LIMIT 10;

如果你想要更详细的信息(包括用户名、节点名等),可以使用这个版本:

SELECT 
    t.id,
    t. title,
    t.replies_count,
    t.likes_count,
    t.created_at,
    t.replied_at,
    u.login as author_login,
    u.name as author_name,
    n.name as node_name
FROM topics t
LEFT JOIN users u ON t.user_id = u.id
LEFT JOIN nodes n ON t.node_id = n. id
WHERE t.created_at >= NOW() - INTERVAL '3 months'
    AND t. deleted_at IS NULL
ORDER BY t.replies_count DESC
LIMIT 10;

SQL 说明:

  • created_at >= NOW() - INTERVAL '3 months' - 筛选 3 个月内创建的帖子
  • deleted_at IS NULL - 排除已删除的帖子
  • ORDER BY replies_count DESC - 按评论数降序排列
  • LIMIT 10 - 取前 10 条记录(可根据需要调整数量)

如果你想统计的是 3 个月内收到评论的帖子(而不是 3 个月内创建的帖子),可以使用:

SELECT 
    t.id,
    t.title,
    COUNT(r.id) as recent_replies_count,
    t.replies_count as total_replies_count,
    t.created_at,
    u.login as author_login
FROM topics t
LEFT JOIN replies r ON r.topic_id = t.id 
    AND r.created_at >= NOW() - INTERVAL '3 months'
    AND r.deleted_at IS NULL
LEFT JOIN users u ON t.user_id = u.id
WHERE t.deleted_at IS NULL
GROUP BY t.id, t.title, t.replies_count, t.created_at, u.login
ORDER BY recent_replies_count DESC
LIMIT 10;

这个版本会统计每个帖子在最近 3 个月内收到的新评论数量。

You need to Sign in before reply, if you don't have an account, please Sign up first.