0

私は2つのテーブルを持っています。2 つのテーブルを比較して、重複する値を削除したいと考えています。ただし、最初に「A-Confirm-tbl」を検索する必要があり、ID が確認されている場合は、上記のテーブルからのみ削除します。簡単な SQL コードを書きましたが、うまくいきませんでした。

SELECT A.id
FROM A
FULL JOIN B
ON A.id = B.id
AND A-Confirm-tbl.id='1'
GROUP BY A.id

A   B
1   2
5   1
2   5
3   4
10  8
20  15

A-Confirm-tbl
id  confirm
1   1
5   0
2   1
3   0
10  0
20  0
4

3 に答える 3

0

フリーハンドですが、基本的には、確認テーブルに参加して確認値が1の行のみを取得し、次に副選択を実行してすべてのB IDを取得し、その副選択からIDを持つAからの行のみを選択します。

SELECT A.id 
FROM A 
JOIN A-Confim-tbl aconf 
  ON A.id = aconf.id AND aconf.confirm = 1 
WHERE a.id IN (SELECT B.id FROM B)
于 2012-06-22T04:00:27.397 に答える
0
DELETE first_table_name
FROM first_table_name
INNER JOIN second_table_name
      ON second_table_name.ID = first_table_name.ID
join A-Confim-tbl on first_table_name.ID=A-Confim-tbl.Id
where A-Confim-tbl.confirm='1'
于 2012-06-22T04:12:34.960 に答える
0

以下のようにします: 内部結合を使用して、tblA と tblB の一致するレコード ID を見つけます。次に、レコードを A-Confirm-tbl で結合し、confirm=1 のみでレコードをフィルタリングします。

SELECT * from tblA a 
INNER JOIN tblB b ON a.id=b.id 
JOIN A-Confim-tbl c on a.id=c.id 
WHERE c.confirm='1'
于 2012-06-22T04:05:30.557 に答える