1

我有个问题。我有 3 个如下表:

1)met_ID(primair)等。

2) magn_ID (primair) met_ID (secondary) ...

3) sens_ID (primair) met_ID (secondary) ...

我必须删除表 1 中的记录,其中表 2 或 3 中的 met_ID 计数小于 10..

SELECT COUNT(*) AS count, met_ID
FROM tbl_1, tbl_2
Where met_ID = met_ID
GROUP BY met_ID

我进行了查询,并在 PHP 中使用 WHILE 循环从表 1 中删除了该记录。它可以正常删除 1000 条记录,但我不确定它是否会完全用于表中的 100 000 条或更多记录。

有什么方法可以完成我在 sql 查询中所做的事情吗?

4

2 回答 2

0

首先使用具有...的子查询

其次,您没有选择 table2 和 table3 中出现的总和,而是在进行交叉连接,因此您的计数实际上是产品...

试试这个

DELETE from table_1 where met_ID IN 
(
  select met_ID FROM
  (
      SELECT met_ID FROM tbl_2   
      union
      select met_id FROM tbl_3
  )
  GROUP BY met_ID
  HAVING count(*) < 10
);
于 2012-04-05T21:14:29.210 回答
0
DELETE from tbl_1
WHERE 10 > (select count(*) from tbl_2 where tbl2.met_id=tbl1.met_id) OR
      10 > (select count(*) from tbl_3 where tbl3.met_id=tbl1.met_id)
于 2012-04-05T21:16:12.660 回答