嵌套查询的MySQL操作数应包含1列
问题描述:
----------------------------
| user | path | active |
----------------------------
| user A | A.1 | 0 |
----------------------------
| user B | A.1.1 | 1 |
----------------------------
| user C | A.1.1.1 | 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);