c# - 如何在查询中执行查询并将其设置为主查询的条件

标签 c# mysql sql inner-join

组织表:

OrgName    Id    ParentID
 Org1      20    Null
 Org2      21    20
 Org3      22    21
 Org4      23    21
 Org5      24    22
 Org6      25    Null

在上表中,Org1 是 super 组织,Org2 是 Org1 的子组织。 Org2 的子组织是 Org3 和 Org4。 Org 5 是 Org3 的子组织

我想在我的数据网格中的父 Org1 下显示这些 Org 的所有详细信息。这里我只知道 Org1 ID 所以mysql查询就像

Select OrgName from Org_table where ID= 20 and ParentID is 20;

但这个查询只返回 Org1 和 Org2,我还必须返回 Org3、Org4 和 Org5,因为它在 Org1 下。我该怎么做。如果是的话,我应该使用某种循环吗?怎么做。我正在使用 c# 在我的 asp.net 网站上执行此操作。

在运行时,我不知道哪个组织是哪个组织的子组织。所以我必须找到 If the parent id is under the main Org

我想做递归查询

最佳答案

我手头没有mysql,但这应该可以满足你的需要

CREATE TEMPORARY TABLE TempTable (OrgName VARCHAR(10), Id INT, ParentID INT); 

INSERT INTO TempTable SELECT OrgName, Id, ParentID FROM org_table;

WHILE EXISTS (SELECT TOP 1 1 FROM TempTable WHERE EXISTS(SELECT TOP 1 1 FROM TempTable TempTableParent WHERE TempTableParent.ID = TempTable.ParentID AND TempTableParent.ParentID IS NOT NULL) ) DO

UPDATE TempTable SET ParentID = TempTableParent .parentID
FROM TempTable
INNER JOIN TempTable TempTableParent ON TempTableParent.id = TempTable.ParentID
WHERE TempTable.ParentID IS NOT NULL AND TempTableParent.ParentID IS NOT NULL

END WHILE;

SELECT * FROM TempTable

不确定更新语句的语法对于 mysql 是否完全正确.. 可能需要稍微调整一下。

关于c# - 如何在查询中执行查询并将其设置为主查询的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836323/

相关文章:

mysql - 嵌套查询的问题

sql - PostgreSQL - 动态值作为表名

c# - C# 应用程序中未使用的引用

java - 如何获取插入NEO4J的最后一个内部ID?

c# - WPF 多重绑定(bind)不起作用 - 标签为空白

javascript - 从 MySQL 查询 google map 上的位置数据

sql - SQL以自定义排序顺序连接第一条记录

SQL 查询应用于子查询行的谓词计数

c# - 将当前身份验证凭据从 UWP 应用程序传递到 Web 服务,以使用这些凭据访问服务器上的资源

c# - 将具有多个元素的 XML 反序列化为单个 C# 对象