2011-05-13 5 views
1

내가하려고하는 것은 useronline 테이블에 ID가없는 로비 테이블의 행을 삭제하는 것입니다. 그렇게하면 나는 "온라인"이 아닌 사람들을 제거 할 수있을 것이다. (실제 스크립트는 누가 온라인이 아니고 동일한 논리를 가지고 있는지에 관한 것이 아닙니다.) 먼저 useronline에서 ID를 선택할 수있는 방법이 있습니까? 그런 다음 lobby에서 방금 선택한 URI가 아닌 것을 검색하고 삭제하십시오. while 회 돌이로 그들? 당신은 [행 $에 $ 행을 변경할 그대로첫 번째 테이블에서 ID를 선택하고 두 번째 테이블에있는 ID를 선택하십시오.

$sql = mysql_query("SELECT DISTINCT `id` FROM `useronline` WHERE 1"); 
while($row = mysql_fetch_array($sql)) { 
mysql_query("DELETE * 
FROM `lobby` 
WHERE `tableid` NOT IN ('$row') <-- Can't figure out how to make this part 
LIMIT 0 , 30"); 
} 

답변

3

하나의 검색어로이 작업을 수행 할 수 있습니다.

DELETE FROM `lobby` 
WHERE `tableid` NOT IN (SELECT DISTINCT `id` FROM `useronline`) 
+0

우수! 고맙습니다! – Logan

+0

MySQL의 전문가는 아니지만 '*'는 delete 문에서 유효하지 않다고 생각합니까? – Nathan

+0

그 때문에 몇 초 전에 그것을 삭제했습니다 ;-)하지만 어쨌든 thx. – DanielB

1

코드를 유지하려면 :

이 내 비 작업 스크립트는 내가 지금까지 아이디어를 가지고 무엇을 보여주기위한 것이다 "id"]는 다음과 같습니다.

WHERE `tableid` NOT IN ('" . $row["id"] . "') 
+0

NOT IN 등이 출력 (1, 2, 3, 4) 또는 처음 일하지 않는 사람, 등등 ... – Logan

+0

이 2가 아닌 다음 사람을 삭제합니다 SELECT가 찾은만큼 많은 쿼리가 실행됩니다. – DanielB

관련 문제