[SQL] LIMIT & IN / ALL / ANY / SOME 서브 쿼리에 문제가
SQLLIMIT & IN / ALL / ANY / SOME 서브 쿼리에 문제가
나는이 쿼리를 가지고 :
SELECT count(cp.CxID) as intSmokers
FROM CustPrimarySmoking cp
JOIN Customer c ON cp.CxID = c.CustomerID
WHERE
cp.CxID IN (SELECT CxID FROM CustPrimarySmoking WHERE CxID = cp.CxID LIMIT 1, 9999)
개수가 첫 번째 레코드를 제외하고 해당 고객에 대한 모든 기록을 검색하는 중첩 된 쿼리의 결과에 따라 될 것 인 아이디어.
그러나, 나는 내가 꽤 터미널 생각이 오류를 얻을 :
사람이 일을 다른 방법을 알고 있나요?
감사
해결법
-
==============================
1.이것은 당신이 진행해야하는 방법이다. 나는 밖으로 작업 한 것을 예를 참조하십시오.
이것은 당신이 진행해야하는 방법이다. 나는 밖으로 작업 한 것을 예를 참조하십시오.
mysql> select * from test; +------+-------+ | id | name | +------+-------+ | 1 | name1 | | 2 | name2 | | 3 | name3 | | 4 | name4 | +------+-------+ 4 rows in set (0.00 sec) mysql> select * from test1; +------+------+--------+ | id | tid | name2 | +------+------+--------+ | 1 | 2 | name11 | | 2 | 3 | name12 | | 3 | 4 | name13 | +------+------+--------+ 3 rows in set (0.00 sec) mysql> select -> t1.name -> from -> test t1 -> join -> test1 t2 on t2.tid = t1.id -> join -> (select id from test where id <4 limit 3) as tempt on tempt.id = t1.id; +-------+ | name | +-------+ | name2 | | name3 | +-------+ 2 rows in set (0.00 sec)
도움이 되었기를 바랍니다.
-
==============================
2.당신은 첫 번째를 제외, 모든 레코드를 검색 할 하위 쿼리를 사용할 필요가 없습니다 :
당신은 첫 번째를 제외, 모든 레코드를 검색 할 하위 쿼리를 사용할 필요가 없습니다 :
intSmokers 같은 SELECT COUNT (cp.CxID) CustPrimarySmoking의 CP FROM cp.CxID = c.CustomerID에 대한 고객 C 가입 WHERE cp.CxID> (SELECT cxID CustPrimarySmoking ORDER FROM BY cxID LIMIT 1)
cxid 숫자라고 가정
-
==============================
3.또한 이중 중첩이 제한을 해결하기 위해 내부 쿼리 볼 수 있습니다 :
또한 이중 중첩이 제한을 해결하기 위해 내부 쿼리 볼 수 있습니다 :
한도 문을 삭제 MYSQL
-
==============================
4.당신이 "각 그룹의 상위 N 행"뭔가를 얻으려면이 제한은 고통이다. 그러나 귀하의 경우에 나는 그것이 가능하더라도 해당 기능을 사용하지 않을 것입니다. 당신은 무엇을하려고하는 것은 하나의 행 각 CxID의 제외한 모든 행을 계산하는 것입니다. 당신이 필요로하는 단지 COUNT (DISTINCT cp.CxID)는 별개의 CustomerIDs의 수를 빼기하는 것입니다. 그래서 최종 쿼리는 간단해야한다 :
당신이 "각 그룹의 상위 N 행"뭔가를 얻으려면이 제한은 고통이다. 그러나 귀하의 경우에 나는 그것이 가능하더라도 해당 기능을 사용하지 않을 것입니다. 당신은 무엇을하려고하는 것은 하나의 행 각 CxID의 제외한 모든 행을 계산하는 것입니다. 당신이 필요로하는 단지 COUNT (DISTINCT cp.CxID)는 별개의 CustomerIDs의 수를 빼기하는 것입니다. 그래서 최종 쿼리는 간단해야한다 :
SELECT count(cp.CxID) - count(DISTINCT cp.CxID) as intSmokers FROM CustPrimarySmoking cp
from https://stackoverflow.com/questions/5004129/problem-with-limit-in-all-any-some-subquery by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의 행에 대한 열 헤더 전치 (0) | 2020.07.05 |
---|---|
[SQL] TRY의 CATCH 안에 단일 문에서 여러 오류 메시지를 캡처 (0) | 2020.07.05 |
[SQL] 어떻게 SQL에 소수점을 계산합니까? (0) | 2020.07.05 |
[SQL] SQL 쿼리 최신 가격을 얻으려면 (0) | 2020.07.05 |
[SQL] SQL 서버의 열의 합계를 실행 얻는 방법 (0) | 2020.07.05 |