select
name_id
from
YourTable
where
term_id = 4 or term_id = 6
group by
name_id
having
count(*) = 2
(5)을 가지고 있기 때문에 4,5처럼 아무것도 표시되지해야 일어나면, 당신은 "GROUP BY "및"HAVING "컨텍스트. Group by는 SQL 쿼리가 "Group By"절로 식별하는 열에 따라 많은 수의 레코드를 그룹화하도록합니다. 이것은 단지 쿼리에서 동일한 단일 열일뿐입니다.
다음으로 HAVING 절은 모든 레코드가 사전 규정되고 포함 된 후 그룹의 최종 결과를 기반으로합니다. 이 경우 자격을 갖춘 레코드의 COUNT (*)를보고 있습니다. 2
두 가지 용어와 관련된 Name_ID가 염려되었으므로 ID가있는 이름이 필요합니다. 둘 다에서 발견 ... 그러므로 WHERE 절의 OR 조건. 우리는 사람이 4 또는 6과 연관된 레코드를 원합니다. 결과에서 단 하나의 레코드 (4 또는 6 만)가 발견되면 COUNT () 값은 1과 같아서 결과 세트에서 삭제됩니다 ... 두 개의 단어 모두와 함께 자격을하는 사람들은 ...
는이 쿼리를 같이하려고 할 수 있습니다 무엇을, 그렇지 않으면 보려면 ... 카운트 () = 최종 결과에 포함하여 2있을 것입니다
select
name_id,
count(*) as TotalTermsPerName
from
YourTable
group by
name_id
귀하의 데이터에 따라 최소 1 개의 용어로 된 모든 이름 ID와 10 개의 용어를 가질 수있는 다른 ID를 얻을 수 있습니다. 원래 쿼리는 4와 6의 조건 만 고려 했으므로 도달 할 수있는 최대 개수는 최대 2가됩니다.
쿼리가 응답하고 HOW 사상의 기초가 이해되지 않고 도움이되기를 바랍니다. 작업.
를 얻을하지만 난 몇 가지를 원한다 like와 같은 성명을 보여 주겠다. 4와 6이 아닌 이름을 보여 주거나 4 또는 6을 표시한다. 왜냐하면 4와 6을 넣었고 2는 아무 것도 보여서는 안되기 때문이다. –
이것은 name_id와 term_id가 모두 같은 두 행에 대해 name_id를 반환한다. 1,4,2), (2,4,2)'. 그건 맞지 않아. – Ishtar