MySQL SELECT 里面有另一个 SELECT

标签 mysql

我的数据库中有一个有点疯狂的结构,其中用户和组织在同一个表中(下面的示例)

他们都关联了PARENTID和MEMBERID,我需要得到的是: 获取所有“人”的 name,他们的 MEMBERID 以及他们 parent 的 name

结果应该是这样的:

UserName1 | DHAD781  | OrgName1

表格示例:

这里是数据库的例子:

    -------*/*------------*/*------------*/*------------*/*------------*/*------------
    MEMBERID      level          name           kind         status      PARENTID
    -------*/*------------*/*------------*/*------------*/*----------*/*------------
    EMD123F |     2        |   OrgName1   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    DHAD781 |     3        |   UserName1  |    Person    |   active   |  EMD123F 
    ---------------------------------------------------------------------------------
    7AJIZU7 |     3        |   UserName2  |    Person    |   active   |  EMD123F 
    ---------------------------------------------------------------------------------
    DME123F |     2        |   OrgName2   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    TT5451AL|     3        |   UserName3  |    Person    |   active   |  DME123F 
    ---------------------------------------------------------------------------------
    RRMI7481|     2        |   OrgName3   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    PPUNSAD9|     2        |   OrgName4   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    GJASDNZB|     3        |   UserName4  |    Person    |  inactive  |  PPUNSAD9
    ---------------------------------------------------------------------------------
    KJNSCZM7|     2        |   OrgName5   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    1UZGOPAS|     3        |   UserName5  |    Person    |   deleted  |  KJNSCZM7
    ---------------------------------------------------------------------------------

我做了什么尝试:

SELECT t1.NAME, t1.MEMBERID 
    FROM roles t1 
    inner join roles t2 on t2.PARENTID = t1.MEMBERID
    WHERE t1.kind= 'Person'

我从这个查询中得到了什么: 找到 0 个结果

最佳答案

似乎是相反的:

SELECT persons.NAME, persons.MEMBERID, orgs.NAME, orgs.MEMBERID
    FROM roles persons 
    INNER JOIN roles orgs on persons.PARENTID = orgs.MEMBERID
    WHERE persons.kind = 'Person'

此外,选择明确的别名使查询更具可读性(并且更不容易出错 :))

关于MySQL SELECT 里面有另一个 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952480/

相关文章:

jquery - 如何用mysql实现无限滚动?

mysql - 如何计算 GROUP_CONCAT 中有多少个逗号分隔值

mysql - Ruby mysql2 gem,无法在 Windows 7 上构建

php - 在 PhpMyAdmin 中监控

mysql - 警告 : mysql_query(): MySQL server has gone away

mysql - 如何在父子关系表中找到无菌节点?

php - 使用 MySQL 和 jQuery 比较数据库值和文本输入的问题 - undefined index 和 mysql_fetch_assoc() 错误

mysql - 选择最大日期时间返回错误值

java - MySQL JDBC over SSL 问题

mysql - 如何获得给定日期的上周五和下周四?