我有一个Postgres表users(E_8_User),其中包含User_id作为主键,Boss作为同一个表的外键(它不可为空,如果某些用户没有boss,则其Boss属性= user_id)。我需要为表中的所有用户获取他们的老板,所以我尝试编写 CTE 查询:
WITH RECURSIVE herarchy_reports AS (
SELECT E_8_User.User_id, E_8_User.Boss, 1 as lvl, E_8_User.User_id as RootUserID
FROM E_8_User
WHERE E_8_User.User_id=E_8_User.Boss
UNION ALL
SELECT usr.User_id, usr.Boss, lvl+1 as lvl, rep.RootUserID
FROM herarchy_reports as rep JOIN E_8_User as usr ON
rep.user_id=usr.Boss
)
SELECT * FROM herarchy_reports ORDER BY RootUserID;
Run Code Online (Sandbox Code Playgroud)
但它不起作用:数据库不断执行查询。我究竟做错了什么?
sql postgresql recursive-query common-table-expression hierarchical-data
我有一个数据集如下:
;WITH CTE AS
( SELECT *
FROM (VALUES
(1, 10, 20, 30)
(2, 10, 21, 31)
(3, 11, 21, 31)
(4, 12, 22, 32)
(5, 13, 23, 33)
(6, 14, 24, 33)
(7, 14, 25, 34)
(8, 15, 26, 36)
) AS MyValues(ID, GroupID1, GroupID2, GroupID3)
)
SELECT *
FROM CTE
Run Code Online (Sandbox Code Playgroud)
如何生成以下内容,将各个组折叠成一个组?
| ID | 单组ID |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 3 |
| 6 | 3 |
| 7 | 3 |
| 8 | 4 |
我发现了一些 T-SQL 代码,我试图弄清楚它是否是:
\n我们有一个要求尝试清理名称:
\nBob\xe2\x86\x92RobertBill\xe2\x86\x92WilliamDick\xe2\x86\x92Richard因此创建了一个表来保存该值以及将其替换为的值。它包含上述单词(以及更深奥的、特定领域的、特定行业的映射):
\n填充词:
\n| 价值 | 用。。。来代替 |
|---|---|
| 迪克 | 理查德 |
| 账单 | 威廉 |
| 鲍勃 | 罗伯特 |
| 特德 | 威廉 |
我看到的用于执行替换的代码要么是天才,要么是疯狂:
\nDECLARE @firstName varchar(200) = \'bill\';\nSELECT @firstName = REPLACE(@firstName, FillerWords.Value, FillerWords.ReplaceWith) FROM FillerWords;\nSELECT @firstName;\nRun Code Online (Sandbox Code Playgroud)\n这使:
\n(no column name)\n----------------\nWilliam\n\n1 row(s) affected\nRun Code Online (Sandbox Code Playgroud)\n更令人印象深刻的是它可以一次进行多个替换: …
我想将递归代码"转换"为迭代代码.例子是:
public int CalcTime(double AnnualIncome, int Time, double Value)
{
if (AnnualIncome / 12 > Value / Time)
return Time;
else
return CalcTime(AnnualIncome, Time + 1, Value);
}
Run Code Online (Sandbox Code Playgroud)
我试过但不能......
非常感谢你!
Oracle文档指出,本地管理的表空间在几个方面优于字典管理的表空间.一个是当数据库在字典管理的表空间中分配空闲块时使用递归sql.表fet $有列(TS#,FILE#,BLOCK#,LENGTH)
任何人都可以解释为什么递归sql用于分配fet $?
我需要获取分层表的根节点(具有 PARENT_ID = NULL):
ID | PARENT_ID
60 NULL
21 60
11 NULL
23 11
24 21
25 23
14 24
13 25
Run Code Online (Sandbox Code Playgroud)
我想要这个结果:
ID | PARENT_ID | ROOT_ID |
-------------------------
1 NULL NULL
2 1 1
3 1 1
4 2 1
5 4 1
6 NULL NULL
7 6 6
8 7 6
Run Code Online (Sandbox Code Playgroud)
CTE是个好方法吗?我怎样才能创建它?
显然我可以有更多的一个根节点。我必须获取每个节点的根节点。
这就是我所做的:
;WITH RCTE AS
(
SELECT ID, PARENT_ID, ID as ROOT_ID
FROM TABLE r1
WHERE NOT EXISTS (SELECT * FROM TABLE r2 WHERE …Run Code Online (Sandbox Code Playgroud) sql sql-server recursion recursive-query common-table-expression
我想在SQL中显示一个带有子节点和父节点的树结构.我有一张桌子:
Employee
-------------
ID (int)
FirstName (varchar)
LastName (varchar)
ParentID (int)
Job (varchar)
Run Code Online (Sandbox Code Playgroud)
代表一名员工.ParentID代表员工的经理.我想这个表只有这个结构.
我在 MySQL 中有一列返回逗号分隔值,我想将该列转换为行。
更好的答案是如何将逗号分隔的参数转换为 mysql 中的行?
select value from table limit 1
回复
| 价值 |
|---|
| 本田,activa,快乐,汽车 |
我希望这个值像这样排列
| 价值 |
|---|
| 本田 |
| 激活 |
| 乐趣 |
| 车 |
sql ×4
sql-server ×3
oracle ×2
c# ×1
connect-by ×1
graph-theory ×1
mysql ×1
postgresql ×1
recursion ×1
t-sql ×1