从表中选择,计数和删除记录简化

时间:2012-04-05 21:10:16

标签: php mysql

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

1)met_ID(primair)等。

2)magn_ID(primair) met_ID(二级) ...

3)sens_ID(primair) met_ID(二级) ...

我必须删除表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条记录,但我不确定它是否会在表中使用10000或更多记录。

有没有办法完成我在sql查询中的操作?

2 个答案:

答案 0 :(得分: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
);

答案 1 :(得分: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)