2017-06-19 64 views
0

我在思考如何完成時已經打破了我的頭。 需要使用與當前表項的ID進行比較的條件進行查詢。從表中刪除表中where子句中的行

也就是說,類似的東西:

DELETE 
FROM table1 
WHERE TIMESTAMPDIFF(MINUTE, Time_ADD, now()) >= (
     SELECT del_time 
     FROM table2 
     WHERE table1.id = table2.id 
     ) 

類似的查詢產生,表明如果不是因爲ID或table1.id不存在如果指定了表1中的子查詢問題,多值的誤差表1名稱被指定

PS對不起,我的英文,如果我犯了一個錯誤。

編輯1 例如,創建查詢可能會看起來像:

CREATE TABLE table1(
    id int identity(1,1), 
    some_value varchar(max), 
    Time_ADD datetime 
) 

CREATE TABLE table2(
    id int, 
    del_time int 
) 

在表2我有int值在幾分鐘內。在此之後,必須刪除id int table1。

+2

請爲'table1'和'table2'發出'CREATE TABLE'命令並添加一些示例數據。 –

+0

我添加CREATE查詢 – ZeT

回答

0

,這可能是你在找什麼

DELETE table1 
FROM table1 
INNER JOIN table2 ON table1.ID = table2.ID 
AND TIMESTAMPDIFF(MINUTE, Time_ADD, now()) >= table2.del_time 
+0

這個查詢在phpMyAdmin中沒有效果。錯誤'INNER JOIN' – ZeT

+0

看看這裏: https://stackoverflow.com/questions/652770/delete-with-join-in-mysql –

0

DELETE FROM table1 WHERE TIMESTAMPDIFF(MINUTE, Time_ADD, now()) >=

確保該查詢你必須只返回一行。

(SELECT del_time FROM table2 WHERE table1.id = table2.id)

要麼你可以更加過濾。

+0

查詢返回多個值,因爲phpMyAdmin沒有看到鏈接到table1:子查詢中的'table1.id' – ZeT