2011-07-06 13 views
0

私はPHPのためのクエリまたはこれのアイデアが必要です。SQLクエリ(2つのテーブルの間で削除)

ニュース

ID MAME 
-------- 
1 Test 
2 Test1 
3 Test2 
4 Test3 
7 Test3 

製品

私はIDがニュースに存在しない製品からレコードを削除する必要が
ID NAME PRICE 
------------- 
1 Test 11 
9 Test2 22 
8 Test4 122 

は、私は2つのテーブルを持っています。

誰かが私にいくつかのアイデアを教えてもらえますか?

ありがとうございました!

+3

'Products'テーブルの' News'テーブルに対してRIGHT JOINを行い、 'News.ID = Null'を確認してください。 http://stackoverflow.com/questions/2973558/select-a-value-where-it-doesnt-exist-in-another-table –

+0

も参照してください。ありがとう、ありがとう。私は今すぐやります。 –

答えて

1
DELETE Products 
FROM Products 
    LEFT JOIN News 
    USING (ID) 
WHERE News.ID IS NULL; 

製品から削除される内容を確認するには、まず選択肢を使用するというポールの優れた提案を使用します。

ので

SELECT * 
FROM Products 
    LEFT JOIN News 
    USING (ID) 
WHERE News.ID IS NULL; 

で確認し、その結果に満足している場合、バック

DELETE Products 
FROM Products 
    LEFT JOIN News 
    USING (ID) 
WHERE News.ID IS NULL; 

に切り替えます。 重要 ではなくDELETE Products FROMです。そうしないと、両方のテーブルから削除されます。

+0

彼はニュースではなく、FROM製品を削除したいと考えています。これはまだ動作しますか? –

+1

はい、DELETE製品FROM [table_reference]は、製品テーブルから行のみを削除することを意味します。基本的には、結合の結果セットに含まれている製品のすべての行が削除されます。ニュースからは何も削除されません。 – JustDanyul

+1

http://dev.mysql.com/doc/refman/5.0/en/delete.html、DELETE文のジョインの例を見てください:)「最初の複数のテーブル構文の場合、ページの: – JustDanyul

3

は、これが動作する場合、それはあなたが削除する前に、正しいデータを取得していることを確認するために選択をしようとすることをお勧めしますDELETESELECT *を変更SELECT * FROM PRODUCTS WHERE ID NOT IN (SELECT ID FROM NEWS)

を試してみてください。

関連する問題