使用另一个表中的where子句从表中删除行

时间:2017-06-19 06:50:30

标签: mysql sql

在我思考如何做的时候,我已经摔坏了脑袋。 需要使用与当前表条目的id进行比较的条件进行查询。

即类似于:

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

类似的查询会产生一个错误,指示如果没有为id指定table1,或者如果指定了table1名称,则table1.id不存在,则子查询会发出多个值

P.S。如果我犯了错误,抱歉我的英语。

编辑1 对于前者CREATE Query可能看起来像:

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

CREATE TABLE table2(
    id int,
    del_time int
)

在table2中,我有几分钟的int值。在那之后,必须删除id int table1。

2 个答案:

答案 0 :(得分:0)

这可能就是你要找的东西

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

答案 1 :(得分:0)

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

确保此查询您必须只返回一行。

<强> (SELECT del_time FROM table2 WHERE table1.id = table2.id)

要么你可以过滤它。