[SQL] 열은 IN 절에 존재하지 않지만 SQL 실행
SQL열은 IN 절에 존재하지 않지만 SQL 실행
나는 IN 절을 사용하는 쿼리가 있습니다. 여기에 단순화 된 버전입니다 :
SELECT *
FROM table A
JOIN table B
ON A.ID = B.ID
WHERE B.AnotherColumn IN (SELECT Column FROM tableC WHERE ID = 1)
테이블은 열 열이없는,하지만 쿼리는 오류 메시지없이 잘 실행. 아무도 그 이유를 설명 할 수 있습니까?
해결법
-
==============================
1.외부 쿼리의 테이블이 그 이름의 열이있는 경우에 작동합니다. 외부 쿼리에서 열 이름이 하위 쿼리에 사용할 수 있기 때문입니다, 당신은 의도적 하위 쿼리 SELECT 목록에 외부 쿼리의 열을 선택하는 것을 의미 할 수있다.
외부 쿼리의 테이블이 그 이름의 열이있는 경우에 작동합니다. 외부 쿼리에서 열 이름이 하위 쿼리에 사용할 수 있기 때문입니다, 당신은 의도적 하위 쿼리 SELECT 목록에 외부 쿼리의 열을 선택하는 것을 의미 할 수있다.
예를 들면 :
CREATE TABLE #test_main (colA integer) CREATE TABLE #test_sub (colB integer) -- Works, because colA is available to the sub-query from the outer query. However, -- it's probably not what you intended to do: SELECT * FROM #test_main WHERE colA IN (SELECT colA FROM #test_sub) -- Doesn't work, because colC is nowhere in either query SELECT * FROM #test_main WHERE colA IN (SELECT colC FROM #test_sub)
데미안가 관찰로, 가장 안전한 방법이 없음 너무나 명백 "잡았다"로부터 자신을 보호하기 위해 하위 쿼리에서 열 이름을 자격을하는 습관을 얻는 것입니다 :
-- Doesn't work, because colA is not in table #test_sub, so at least you get -- notified that what you were trying to do doesn't make sense. SELECT * FROM #test_main WHERE colA IN (SELECT #test_sub.colA FROM #test_sub)
-
==============================
2.당신이 (마 깁슨 설명 것을) 나중에이 상황을 방지하려면, 항상 열을 지정하는 별칭을 사용하는 습관을지고의 가치입니다. 예컨대 :
당신이 (마 깁슨 설명 것을) 나중에이 상황을 방지하려면, 항상 열을 지정하는 별칭을 사용하는 습관을지고의 가치입니다. 예컨대 :
SELECT * FROM table A JOIN table B ON A.ID = B.ID WHERE B.AnotherColumn IN (SELECT C.Column FROM tableC C WHERE C.ID = 1)
이것은 (- tableC에 ID 열이 아니었다면, 당신은 또한 있었다 것 추가적인 문제 나 또한 절에서 별칭을 지정 주) 당신에게 좋은 오류 메시지를 준 것
from https://stackoverflow.com/questions/5076906/column-does-not-exist-in-the-in-clause-but-sql-runs by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 워드 VBA SQL 쿼리에 따옴표를 다루는? (0) | 2020.07.16 |
---|---|
[SQL] SQL 그룹에 의해 분 (MySQL의) (0) | 2020.07.16 |
[SQL] PHP는 PDO에 오래된는 mysql_query 변경 (0) | 2020.07.16 |
[SQL] 어떻게 SQL Server 2008 R2의 일 / 월 / 연도에 시스템 날짜 형식을 변환하는? (0) | 2020.07.16 |
[SQL] 다른 데이터 유형과 외래 키를 설정 (0) | 2020.07.16 |