2011-05-13 56 views
1

我想要做的是刪除大廳表中沒有useronline表中的ID的行。這樣我就能消除那些「不在線」的人。 (實際的腳本不是關於誰不在線,而是它的邏輯相同)有沒有一種方法可以首先從useronline中選擇ID,然後在lobby中搜索那些不是我剛剛選擇的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 2011-05-13 07:55:29

+0

不是mysql的專家,但'*'在我認爲的刪除語句中無效? – Nathan 2011-05-13 07:58:00

+0

因此我幾秒前刪除它;-)但無論如何thx。 – DanielB 2011-05-13 07:58:50

1

保持代碼原來的樣子,你想$行更改爲$行[ 「id」]像這樣:

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

將這個輸出像NOT IN(1,2,3,4)還是會首先刪除不1的那些,則那些不屬於2等... – Logan 2011-05-13 07:55:06

+0

有將會像SELECT查找那樣執行很多查詢。 – DanielB 2011-05-13 07:56:34

相關問題