如何编写SQL查询返回按经办人分组、带<br>换行的格式化HTML链接结果
问题根因
- 逻辑错误:需求要求同经办人仅最后一条任务不加
<br>,你当前用组内最小ID做判断,刚好和需求相反,应该匹配组内最大ID才对 - 排序错误:
UNION会自动对结果集去重排序,打乱了同经办人任务的排列顺序,导致输出不符合预期
正确查询语句(适配SQL Server)
SELECT CONCAT( '<a href="https://example.com/manager/tasks/view/', id, '">', title, '</a>', CASE WHEN rn != 1 THEN '<br/>' ELSE '' END ) AS link FROM ( SELECT id, title, assignee, -- 按经办人分组,ID倒序排列,组内最大ID也就是最后一条的行号为1 ROW_NUMBER() OVER (PARTITION BY assignee ORDER BY id DESC) AS rn FROM tasks ) t -- 输出先按经办人排序,同经办人按ID升序排列 ORDER BY assignee, id ASC
输出结果验证
执行上述查询后返回结果和要求的格式完全一致:
<a href="https://example.com/manager/tasks/view/1">Task 1</a><br/> <a href="https://example.com/manager/tasks/view/3">Task 3</a><br/> <a href="https://example.com/manager/tasks/view/5">Task 5</a> <a href="https://example.com/manager/tasks/view/2">Task 2</a><br/> <a href="https://example.com/manager/tasks/view/4">Task 4</a>
内容的提问来源于stack exchange,提问作者user389391
相关产品推荐
相关产品推荐

