MySQL选择“某物为真”的查询

MySQL选择“某物为真”的查询,mysql,Mysql,我的数据库中有一个users表,不幸的是其中有很多混乱,我试图将其移动到新的表中。但只是精确的东西,而不是复制/粘贴整个 下面是db的外观示例: -------*/*------------*/*------------*/*------------*/*------------*/*------------ id level name kind status parentId --

我的数据库中有一个users表,不幸的是其中有很多混乱,我试图将其移动到新的表中。但只是精确的东西,而不是复制/粘贴整个

下面是db的外观示例:

    -------*/*------------*/*------------*/*------------*/*------------*/*------------
      id        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
    ---------------------------------------------------------------------------------
你在这里看到的是,有些组织有0个用户,因此毫无用处,有些组织有用户,但他们不是活动的,非活动的,已删除的

我的问题是如何编写一个select语句来获取所有组织,其中至少有一个活跃人员

RealData有点复杂,但我尝试以下方法:

UPDATE users set org_status=1 WHERE (select count(STATUS) FROM users WHERE users.MEMBERKIND="Person" AND users.STATUS="Active" AND users.ROOTORGANIZATIONUSERID= users.ROOTORGANIZATIONIDCORRECTED)>0 AND MEMBERKIND = "Organization" AND LEVEL=2

我创建了新行org_status并将其设置为NULL,然后尝试更新它

假设您只关心属于没有中间级别的组织的人员,那么您可以使用exists获取组织:

select t1.*
from your_table t1
join your_table t2 on t2.parentId = t1.id
where t2.status = 'active'

请提供您迄今为止尝试过的查询。但是子选择应该可以工作,我想是未经测试的:SELECT*FROM orgaTable,其中SELECT count*FROM orgaTable作为users,其中users.parentId=orgaTable.id>0;可能是重复的嘿,对不起,如果我把你搞糊涂了,但是没有两张桌子,只有一张atmYes。我在查询中使用不同的别名t1和t2两次加入同一个表your_表嘿,感谢这一点,我尝试了多次,不幸的是,我没能得到成功的结果。我只有24排,其余几千排都丢了。从逻辑上看,这看起来不错,所以我不知道哪里有问题,也许你可以建立一个最小的例子,然后我们可以看到问题是什么。嘿,对不起,如果我混淆了你,但没有2个表,它只是一个atm@Andurit . . . 此查询仅引用一个表。
select o.*
from users o 
where exists (select 1
              from users p
              where p.parentid = o.id and
                    o.kind = 'Org' and
                    p.kind = 'Person' and
                    p.status = 'active'
             );