簡體   English   中英

使用查詢結果在同一個表上獲取另一個結果

[英]Using the result of query to get another result on the same table

我對這個SQL查詢很感興趣。

以下查詢返回v2_modules.id,然后我想再次在v2_modules表上運行以獲取所有已獲得v2_modules.id的行作為parentId

select distinct v2_modules.id,v2_modules.name, v2_modules.url, v2_modules.parentId 
from v2_modules
            inner join v2_roles_permissions_modules
                on v2_modules.id =  v2_roles_permissions_modules.moduleId
                    inner join v2_admin_roles
                        on v2_roles_permissions_modules.roleId = v2_admin_roles.roleId
                            inner join admin
                                on v2_admin_roles.adminID = 89

我很震驚,我應該如何獲得所需的結果。

您可以將結果包裝為子查詢,並對表執行另一次連接:

select *
from
(
select distinct v2_modules.id,v2_modules.name, v2_modules.url, v2_modules.parentId 
from v2_modules
            inner join v2_roles_permissions_modules
                on v2_modules.id =  v2_roles_permissions_modules.moduleId
                    inner join v2_admin_roles
                        on v2_roles_permissions_modules.roleId = v2_admin_roles.roleId
                            inner join admin
                                on v2_admin_roles.adminID = 89
)
as table1
inner join v2_modules on v2_modules.parentId = table1.id

連接條件可以顛倒,我不知道它是否是您正在尋找的那個

像這樣?

select distinct 
    c.id,c.name, c.url, c.parentId 
from 
    v2_modules m    inner join
    (select distinct 
        m.id,m.name, m.url, m.parentId 
    from 
        v2_modules m    inner join 
        v2_roles_permissions_modules p  on 
        m.id =  p.moduleId
        inner join v2_admin_roles r on 
        p.roleId = r.roleId
        full outer join admin a
    where
        r.adminID = 89) c on
    m.parentid = c.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM