sql - postgresql如何结合这两个查询?
问题描述
我正在尝试结合这两个查询,但我不知道如何
SELECT id FROM comments WHERE thread_id = $1 AND parent_id is NULL
这将返回一个整数。即 - 5
然后将 id 结果 (5) 用于此递归查询
With RECURSIVE recursetree AS
(
SELECT * FROM comments WHERE comment_id = (use the id 5 here)
UNION
SELECT t.*
From comments t
JOIN recursetree rt ON rt.comment_id = t.parent_id
)
SELECT * from recursetree
解决方案
您应该能够将第一个查询放入递归子查询的锚点:
With RECURSIVE recursetree AS (
SELECT c.
FROM comments c
WHERE thread_id = $1
UNION ALL
SELECT c.*
FROM comments c JOIN
recursetree
rt ON rt.comment_id = c.parent_id
)
SELECT *
FROM recursetree;
另请注意:
UNION ALL
比 更有意义UNION
,除非您想承担删除重复项的开销。- 表别名比任意字母
c
更有意义。comments
t
- 这
$1
表明您正在使用参数修改查询字符串。您应该为查询使用参数。
推荐阅读
- excel - 如何在 excel vba 中包含数据透视表过滤器标题
- asp.net-mvc - 如何在路由解析中包含查询字符串以允许具有相同方法、路由和查询字符串的多个操作?
- spring - 未找到不需要的 mainClassName
- reactjs - react中如何改变hook的参数(fetch hook)
- d3.js - 如何在 d3js 中设置 xaxis 标签?
- python - Pandas Groupby - 枚举数据框并复制到新的、独特的 Excel 工作表中
- javascript - 以编程方式请求使用跨站点 cookie 的权限
- ruby-on-rails - 为什么 SimpleCov 不能识别我的模块测试?
- java - Selenium>Webdriver>Java>单击模型窗口中的按钮时,正在触发另一个背景按钮
- java - 如何为 Spring Boot 服务器初始化程序编写 mockito 测试