다음과 같은 sql 쿼리를 통해 내가 좋아하는 태그 이외의 다른 태그가없는 주목할만한 질문을 불러오고 더 많은 필터가 포함됩니다. 두 가지 주요 문제는이 쿼리가 있습니다특정 태그가있는 경우 recordonly 가져 오기
만에 => (당신은 할 수에서 을 달성하고
- 내가 신청 한 가짜 기술 (그래도 더 개선해야 할 수도 있습니다) 같은 쿼리를 두 번 먼저 사용하여 필자가 필요로하는 것을 얻은 다음 필자가 선호하는 태그보다 다른 태그를 가진 모든 질문을 무시하기 위해 필터가 아닌 다른 태그로 동일한 결과를 필터링해야했습니다. 내가 할 수있는 다른 방법을 찾지 못했습니다.
distinct
을 적용한 이유는 왼쪽 결합을 사용하지 않았더라도 중복 결과을 제공했기 때문입니다.ID
이 같은 열에 여러 조건을 피할 수있는 유일한 당신이 필요로하는 열과IN()
경우 당신은HAVING
절을 사용할 수 있습니다 어떻게 IDS 수 I 별개의 독특한 키워드
Select distinct top 100
'http://stackoverflow.com/questions/'+Cast(p.Id as varchar(20)) as ids
from Posts p
Join posttags pt on p.Id=pt.PostId
where AcceptedAnswerId is null
and AnswerCount = 0
and len(body) <2000
and viewCount<30
and DateDiff(hour, p.creationDate, GETDATE())<200
and ClosedDate is null
and p.id not in
(
select p.id as id from posts p join posttags pt
on p.Id=pt.PostId
where pt.tagId != 21 and pt.tagId != 3
and pt.tagId != 9 and pt.tagId != 5
and pt.tagId != 820 and pt.tagId != 2
and pt.tagId != 22 and pt.tagId != 1508
and pt.tagId != 46426 and pt.tagId != 96
and pt.tagId != 363
and AcceptedAnswerId is null
and AnswerCount = 0
and len(body) <3000
and viewCount<30
and DateDiff(hour, p.creationDate, GETDATE())<200
and ClosedDate is null
)
order by ids
--21 mysql --3 javascript --9 c# --5 php --820 jquery
--2 html --22 sql --1508 json --46426 nodejs--96 asp.net
--363 ajax
귀하의 질의에 불필요한 복잡성이 있습니다. 나는 당신이 처음에 그것을 단순화 할 것을 제안한다. (내 눈에 들어간 것은'pt.tagId'의 안쪽 셀렉션 목록이다.'pr.tagId not in (2,3,5,9,21, 22,96,363,820,1508,46426) '). 둘째로, 바깥 쪽 셀렉트가 내부에서 반환 된 것을 '안'을 요구한다는 것입니다. 그래서 실제로'p.id in (2,3,5,9,21,22,96,363,820,1508, 46426)'다른 조건들, 맞죠? – FDavidov
첫 번째 진술은 정확합니다. 두 번째 진술은 정확하지 않습니다. 마이너스가 마이너스 인 것과 같지 않은 그는 ** 특정 태그 만 가진 ** ID 만 원합니다. 따라서 그는 다른 태그가 없는지 확인해야합니다. @FDavidov – sagi
@sagi, 내부가 1,4,6,7,8을 반환하면 ... 외부가 모두를 원하지만 내부를 반환하면 외부가 2,3,5,9 ..., 맞습니까? (나는 여기서 다른 조건들을 무시하고있다). – FDavidov