----------------------------
| user | path | active |
----------------------------
| user A | A.1 | 0 |
----------------------------
| user B | A.1.1 | 1 |
----------------------------
| user C | A.1.1.1 | 1 |
----------------------------条件:
path类似于用户树。用户B是用户A的子项,用户C是用户B的子项。如果active =0,则表示用户未处于活动状态。
我需要通过路径选择用户A的孩子,这个孩子是活动的,也有一个孩子。
现在,我已经有了一个选择用户A的子级的查询
select path from table where active = 1 and `path` like 'A.1%' and
length(`path`) - length(replace(`path`, '.', '')) = 2;它将返回用户A的所有childs。
现在,我需要选择用户A的孩子,他也有一个孩子。
我尝试使用嵌套select,如下所示
select distinct path from table where active = 1 and user_type = 1 and `path` like ((select path from acctProgress_monthly where active = 1 and user_type = 1 and `path` like 'A.1%' and
length(`path`) - length(replace(`path`, '.', '')) = 2), '%');但它返回错误"operand should 1 column“
有人能帮我解决这个问题吗?
非常感谢
发布于 2017-10-19 16:57:30
在mysql中,当你想使用嵌套的SELECT时,它必须返回1个值。
假设myNames表是这样的:
id |名称
1|约翰
2| Anne
如果你这样做了
SELECT * FROM myTable WHERE name = (SELECT name FROM myNames);
将抛出该错误,因为(SELECT name FROM myNames)将返回多行。
要修复它,您只需返回一行和一列(1个值):
SELECT * FROM myTable WHERE name = (SELECT name FROM myNames WHERE id = 1);
https://stackoverflow.com/questions/46826081
复制相似问题