一次查询中的多个数据检查

时间:2012-02-10 09:40:34

标签: mysql sql database postgresql

我有以下问题。我在数据库中有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

表现非常重要。

3 个答案:

答案 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)

假设uidTable2 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}}