我有以下问题。我在数据库中有2个表 - table1和table2。
Table1
id| val1| val2
--------------
1 | 234 | 342
2 | 325 | 356
...
Table2
id | uid | val
--------------
1 | 5 | 234
2 | 6 | 362
3 | 5 | 123
如果table1(table2.val=table1.va1 or table2.val > table1.vall
)中存在val,我想检查table2中的每条记录。
在table1中大约有200万条记录。在table2几千。
如果查询结果为true,我想从table2中删除行。
是否可以在一个查询中执行此操作? mysql或postgresql
表现非常重要。
答案 0 :(得分:0)
delete t
from #table2 t
inner join #table1 t2
on t.val = t2.val or t2.val>t.val
答案 1 :(得分:0)
假设(t2.val = t1.val1) or (t1.val2 > t2.val)
条件:
delete table2
from table2 t2
inner join table1 t1 on (t2.val = t1.val1) or (t1.val2 > t2.val)
答案 2 :(得分:0)
假设uid
中Table2
id
Table1
中的Table1
(并且这两个表都不包含空值),这将返回SELECT *
FROM Table1
WHERE EXISTS (
SELECT *
FROM Table2
WHERE Table2.uid = Table1.id
AND (
Table2.val = Table1.val1
OR Table2.val > Table1.val2
)
);
中满足您存在的行标准:
{{1}}