투표 IPAddress가 내 자신과 일치하지 않는 모든 게시물을 가져 오려고합니다. 여기에 내 SQL이있다. 문제는 누군가 다른 사람이 투표했을 때 내가 투표 한 투표를받는 것입니다. 나는이 코드가 왼쪽 join이 가능하고 어떤 IPAddr == 내 것이 없을 때 select post라고 말한 것으로 생각했다. 하지만 그 일은 일어나지 않는 것 같습니다. 이것을 어떻게 써야합니까?왼쪽 연결로 인해 잘못된 결과가 나타납니다.
select * from Post
left join Vote as V on V.post=Post.id AND V.IPAddr<>123
where flag='1';
찾는 문제를 설명하는 일부의 더미 데이터이다.
create table P(id int primary key, body text);
create table V(id int primary key, val int, ip int, post int);
insert into P values(1,"aaa");
select * from P left join V on V.post=P.id where (V.ip is null or V.ip<>123);
insert into V values(1, 2,123,1);
select * from P left join V on V.post=P.id where (V.ip is null or V.ip<>123);
insert into V values(2, 2,13,1);
select * from P left join V on V.post=P.id where (V.ip is null or V.ip<>123);
실제로 원본이 코드를 어떻게 작성했는지. 그것은 위의 질문에서 다시 쓰는 작업도하지 못했습니다. –
데이터 및 예제 출력을 보지 않고도 더 많은 작업을 수행 할 수 있다고 생각하지 마십시오. – RedFilter
좋아, 내가 할 수있는 걸 보게. 나는 진짜 실수를 보는 것을 끝내지 않으면 10 분 이내에 뭔가를 가져야한다. –