두 개의 테이블이 있습니다. 한 테이블에는 다른 테이블의 ID를 보유하는 열이 있습니다. 이 열은 하나 이상의 ID를 저장할 수 있으므로 목록으로 저장합니다. 예를 들어 "1,2,3,4"가 값일 수 있습니다. 그래서 다음을 사용하려고합니다 :하위 쿼리와 함께 IN 사용
SELECT TableAValue
FROM TableA
WHERE TableAID IN
(SELECT TableAID FROM TableB WHERE TableBID = 1)
이것은 하나의 값을 가져옵니다.
지금 내가 사용하는 경우 :
가SELECT TableAID FROM TableB WHERE TableBID = 1
이 네 개의 값을 다시 제공합니다. 또한이 4 개의 값을 복사하여 사용하면 다음을 사용하십시오.
SELECT TableAValue
FROM TableA
WHERE TableAID IN
(1,2,3,4)
이렇게하면 4 가지 값이 반환됩니다. 이것은 매우 간단하게 보이기 때문에, 나는 그것을 완전히 잘못하고있는 중이거나 작은 세부 사항을 놓치고 있다고 생각합니다. 어떤 아이디어?
1 대 다수 관계에 대해 쉼표로 구분 된 목록을 저장하지 마십시오. 복합 PK'TableAID, TableBID' 및'TableA'에 대한 FK 관계가있는 접합 테이블이 있어야합니다. –
@MartinSmith 질문에 따르면 쉼표로 구분 된 목록으로 데이터를 저장하는 것 같지 않습니다. – Karolis
@Karolis - 당신은 그것을 올바르게 읽지 않았습니다! 특히 두 번째 줄을보십시오. 또한 그들이 implict cast에서 1 개의 결과를 얻는 이유를 설명합니다. 내가 아는 한 모든 첫 번째 숫자가 아닌 문자 (쉼표)는 무시됩니다. –