对于标准的 select、where、sort、limit 查询,我自己就能写,但更复杂的查询,我现在会问 AI。我问 AI:
“写一个查询,显示一个类别,然后列出该类别下排名前 5 的主题发起者以及他们发起的主题数量”
它立刻就给了我(这是一个非 Discourse 数据库):
WITH TopTopicStarters AS (
SELECT
c.id AS category_id,
c.name AS category_name,
u.name AS user_name,
COUNT(t.id) AS num_topics_started,
ROW_NUMBER() OVER(PARTITION BY c.id ORDER BY COUNT(t.id) DESC) AS rank
FROM topics t
JOIN categories c ON t.category_id = c.id
JOIN users u ON t.user_id = u.userid
GROUP BY c.id, u.name
)
SELECT
c.category_name,
tts.user_name,
tts.num_topics_started
FROM categories c
JOIN TopTopicStarters tts ON c.id = tts.category_id
WHERE tts.rank <= 5;
没有 AI 的帮助,我绝对不可能在不大量搜索和反复试验的情况下想出这个!