嵌套查询的MySQL操作数应包含1列

问题描述:

---------------------------- 
| user | path | active | 
---------------------------- 
| user A | A.1  | 0 | 
---------------------------- 
| user B | A.1.1 | 1 | 
---------------------------- 
| user C | A.1.1.1 | 1 | 
---------------------------- 

条件:嵌套查询的MySQL操作数应包含1列

路径是等的用户的树。 用户B是用户A的子女,用户C是用户B的子女。 如果激活= 0,则表示用户未激活。

我需要通过路径选择活动的用户A的孩子,也有一个孩子。

现在我已经有一个查询来选择用户的孩子

select path from table where active = 1 and `path` like 'A.1%' and 
length(`path`) - length(replace(`path`, '.', '')) = 2; 

将返回用户A的所有孩子的

现在我需要选择用户A的孩子谁也有一个孩子。

我试图用户嵌套选择这样

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), '%'); 

但它返回错误“操作数应包含1列”

有人可以帮我这个问题

非常感谢

mysql当你想要使用嵌套SELECT它必须返回1值。

想象myNames表如:

ID |名称

1 | John

2 | 安妮

如果你

SELECT * FROM myTable WHERE name = (SELECT name FROM myNames);

将抛出一个错误,因为(SELECT name FROM myNames)将返回多行。

要解决它,你只需要返回1行1列(1个值):

SELECT * FROM myTable WHERE name = (SELECT name FROM myNames WHERE id = 1);