UPDATE는 MySQL의 왼쪽 가입을 제외한 값
데이터베이스 모델 sqfiddle에 있습니다 : http://sqlfiddle.com/#!2/8dbb0/10
그리고 주석에 따라 질문을 업데이트했습니다.
이 asume에게 지금은 모든 사용자 2를 표시 할 사용자 (2)에 의해 사용 된 tag_id 1을 수 있습니다
게시물
태그
tag_to_post :
원래 포스트 나는 세 개의 테이블을 가지고 다른 사용자가 tag_id 1로 태그 지정했지만 사용자 2는 지금까지 tag_id 1로 태그 지정하지 않았습니다.
쿼리 :
: 내가 좋아하는 곳-문을 시도post_id | tags_id | user_tagged_post
1 | 1 | 1
1 | 1 | 2
2 | 1 | 2
3 | 1 | 1
그래서 만이 남아 있어야 포스트 ID 3.
첫째 :
SELECT posts.id AS post_id, tags.id AS tag_id, tag_to_post.user_id AS
user_tagged_post
FROM posts
LEFT JOIN tag_to_post ON tag_to_post.post_id = posts.id
LEFT JOIN tags ON tags.id = tag_to_post.tag_id
WHERE tags.id =1
같은 것을 생산
WHERE tags.id = 1 AND tag_to_post.user_id != '2'
하지만이 과정은 배제되므로 post_id 1을 제외하지 않습니다. WHERE 절 앞에 DISTINCT 또는 GROUPED BY가 있어야한다고 생각합니다. 그러나 허용되지 않는 것 같습니다. 그래서 유일한 방법은 하위 쿼리입니까? 지금까지 해결책을 찾지 못했습니다. 어떤 아이디어?
쿼리에서''foo "'는 어디에 있습니까? – Barmar
나는 여기서 뭘 하려는지 알기가 힘듭니다. 좀 더 명확히 해 주시겠습니까? 어쩌면 각 테이블의 샘플 내용을 보여주고 각 열의 의미를 더 잘 설명 할 수 있습니다. – DaveyLaser
샘플 데이터를 가지고 sqlfiddle.com에서 피들을 만드는 것이 가장 좋습니다. – Barmar