[SQL] 서브 쿼리가 존재합니다 도입되지 않은 경우 하나 개의 표현이 선택 목록에 지정할 수 있습니다
SQL서브 쿼리가 존재합니다 도입되지 않은 경우 하나 개의 표현이 선택 목록에 지정할 수 있습니다
내 쿼리는 다음과 같이하고, 그 안에 하위 쿼리가 포함되어 있습니다
select count(distinct dNum)
from myDB.dbo.AQ
where A_ID in
(SELECT DISTINCT TOP (0.1) PERCENT A_ID,
COUNT(DISTINCT dNum) AS ud
FROM myDB.dbo.AQ
WHERE M > 1 and B = 0
GROUP BY A_ID ORDER BY ud DESC)
내가 수신하고 오류는 ...
Only one expression can be specified in the select list when the subquery is not
introduced with EXISTS.`
혼자 하위 쿼리를 실행하면 내가 메인 쿼리와 약간의 문제가 가정하고, 잘 반환?
해결법
-
==============================
1.이에 A_ID을 비교하도록되어 열 - 당신은 WHERE A_ID IN (하위 쿼리) 절에 비교를 위해 하위 쿼리에 두 개 (또는 여러) 열을 반환 할 수 없습니다? 귀하의 하위 쿼리에만 IN의 반대편에 열을 비교하는 데 필요한 하나의 열을 반환해야합니다. 그래서 질의는 다음 형식이어야합니다 :
이에 A_ID을 비교하도록되어 열 - 당신은 WHERE A_ID IN (하위 쿼리) 절에 비교를 위해 하위 쿼리에 두 개 (또는 여러) 열을 반환 할 수 없습니다? 귀하의 하위 쿼리에만 IN의 반대편에 열을 비교하는 데 필요한 하나의 열을 반환해야합니다. 그래서 질의는 다음 형식이어야합니다 :
SELECT * From ThisTable WHERE ThisColumn IN (SELECT ThatColumn FROM ThatTable)
당신은 또한 당신이 바로 상단 행에서 선택할 수 있도록 정렬을 추가 할 수 있지만, 당신은 당신의 정렬을하기 위해 열로 COUNT를 반환 할 필요가 없습니다; 주문 절에서 정렬하는 쿼리에 의해 반환 된 열의 독립적이다.
이 같은 시도 :
select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY COUNT(DISTINCT dNum) DESC)
-
==============================
2.당신은 당신이 변수에 반환 값을 할당하는 경우 쿼리에서 하나의 열과 하나 개의 행을 반환해야합니다. 예:
당신은 당신이 변수에 반환 값을 할당하는 경우 쿼리에서 하나의 열과 하나 개의 행을 반환해야합니다. 예:
select * from table1 where Date in (select * from Dates) -- Wrong select * from table1 where Date in (select Column1,Column2 from Dates) -- Wrong select * from table1 where Date in (select Column1 from Dates) -- OK
-
==============================
3.그것은 대해 불평
그것은 대해 불평
COUNT(DISTINCT dNum) AS ud
부질의 내부. 당신이이 쿼리를 존재 수행하지 않는 하나의 열은 하위 쿼리에서 반환 할 수 있습니다. 당신이 두 번 같은 열에 수를하고 싶은 이유는 표면적으로 당신이 무엇을하고 있는지에 중복 보이는, 잘 모르겠어요. 여기에 하위 쿼리는 조인으로는 동일하지 않습니다 단지 필터입니다. 즉 당신이 데이터를 제한하기 위해 다시 얻기 위해 무엇을 열 지정하지 그것을 사용할 수 있습니다.
-
==============================
4.당신은 귀하의 하위 쿼리를 사용하려면 별도로 여기에 아주 좋은 반응에서, 당신은뿐만 아니라 이것을 시도 할 수 있습니다.
당신은 귀하의 하위 쿼리를 사용하려면 별도로 여기에 아주 좋은 반응에서, 당신은뿐만 아니라 이것을 시도 할 수 있습니다.
접근하다:
1) 서브 쿼리에서 원하는 열 (만 1)을 선택
2) 사용 경우 열 이름을지도로
암호:
SELECT count(distinct dNum) FROM myDB.dbo.AQ WHERE A_ID in ( SELECT A_ID FROM (SELECT DISTINCT TOP (0.1) PERCENT A_ID, COUNT(DISTINCT dNum) AS ud FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY ud DESC ) a )
from https://stackoverflow.com/questions/1904314/only-one-expression-can-be-specified-in-the-select-list-when-the-subquery-is-not by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어디 | DataDirectory를 | 한정된? (0) | 2020.04.04 |
---|---|
[SQL] NVARCHAR (최대) 아직 잘리지 (0) | 2020.04.04 |
[SQL] 다른 테이블을 기반으로 테이블의 모든 행을 삭제 (0) | 2020.04.04 |
[SQL] 엑셀 VBA에서 액세스 SQL 데이터베이스 (0) | 2020.04.03 |
[SQL] MySQL은 - 어떻게 "0"전면 패드의 우편 번호에? (0) | 2020.04.03 |