2017-10-19 11 views
0
---------------------------- 
| 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이면 사용자가 활성 상태가 아닙니다.중첩 된 선택 MySQL의 피연산자해야 1 열

나는 활동중인 사용자 A의 자녀를 경로별로 선택해야합니다.

지금은 내가 이미

지금 내가 사용자 A의 아이를 선택해야이 사용자 A의 모든 차일을 반환합니다

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

사용자의 아이를 선택하는 쿼리를 가지고있는 또한 아이가있다.

i는 사용자에게 노력이

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 열을 포함해야한다"반환

누군가가이 문제에 대해

덕분에 많은

를 나를 도울 수

답변

0

mysql에서 중첩 된 SELECT을 사용하려면 1 값을 반환해야합니다.

처럼되고 myNames에게 표를 상상해

ID | 이름

1 | John

2 |

당신이 (SELECT name FROM myNames)이 여러 행을 반환하기 때문에

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

그 오류가 발생합니다한다면.

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

:

경우에만 1 행 1 열 (1 값)을 반환 할 필요를 해결하려면