首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的选择mysql操作数应包含%1列

问嵌套的选择mysql操作数应包含%1列
EN

Stack Overflow用户
提问于 2017-10-19 16:50:57
回答 1查看 39关注 0票数 0
代码语言:javascript
复制
----------------------------
| 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的子级的查询

代码语言:javascript
复制
select path from table where active = 1 and `path` like 'A.1%' and 
length(`path`) - length(replace(`path`, '.', '')) = 2;

它将返回用户A的所有childs。

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

我尝试使用嵌套select,如下所示

代码语言:javascript
复制
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“

有人能帮我解决这个问题吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46826081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档