1

私は問題があります。私は以下のような3つのテーブルを持っています:

1)met_ID(primair)など。

2)magn_ID(プライマリ)met_ID(セカンダリ)..。

3)sens_ID(プライマリ)met_ID(セカンダリ)..。

テーブル2または3のmet_IDカウントが10未満であるテーブル1のレコードを削除する必要があります。

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

クエリを実行し、PHPでWHILEループを使用して、テーブル1からそのレコードを削除しています。1000レコードを削除しても問題ありませんが、テーブル内の100000以上のレコードで完全に使用されるかどうかはわかりません。

SQLクエリで行うことを達成する方法はありますか?

4

2 に答える 2

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 に答える
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 に答える