2 개의 테이블이 있습니다. 하나는 배울 수있는 것들을 가진 테이블입니다. 각 행의 행을 처리하고 각 행마다 고유 한 JID가 있습니다. 두 번째 테이블은 학습 한 것의 로그 (JID)와 그것을 배운 사람의 사용자 ID입니다. 현재 JID에 대한 모든 데이터를 선택하는 데이 옵션을 사용하고 있지만 사용자가 userid를 기반으로 배운 데이터 만 선택합니다.선택 * table1에서 table2에 존재하지 않는 조건부
SELECT *
FROM tablelist1
LEFT JOIN tablelog2 ON (tablelist1.JID = tablelog2.JID)
AND tablelog2.UID = 'php var'
WHERE tablelog2.JID IS NOT NULL
이제 학습 할 항목 행을 선택해야하지만 사용자 ID가 아직 학습하지 않은 사항 만 선택해야합니다. 나는 분명히 이것에 아주 새롭다, 나와 곰. :) 나는 IS NULL을 사용하여 노력했지만 그것이 작동하는 동안, 그것은 중복되는 JID의 하나가 NULL이되고, 하나는 옳다.
SELECT t.*
FROM TABLE_LIST t
WHERE t.jid NOT IN (SELECT tl.jid
FROM TABLE_LOG tl
GROUP BY tl.jid)
NOT EXISTS 사용 : 않고 사용
SELECT t.*
FROM TABLE_LIST t
LEFT JOIN TABLE_LOG tl ON tl.jid = t.jid
WHERE tl.jid IS NULL
:
그것은 하위 쿼리를 사용하여 w/o 할 수 있습니까? 하위 쿼리는 매우 느리고 테이블 2에는 많은 행이 있습니다. 동일한 방법으로 처음에는 조인을 사용했습니다. – user192738
왼쪽 가입은 완벽하게 작동했습니다. FYI에 감사드립니다. 나는 여분의 선택이 느려지는 것처럼 보이지만, NOT IN이 동등하다는 것을 알지 못했다! – user192738