2017-10-20 18 views
0

から削除MySQLは私は2つのテーブル</p> <p>TABLE1を持っている他のテーブル

pnr, type, loc, dt 
01, c3, l2, 2017-02-02 11:10:00 
01, c3, l2, 2017-01-01 09:00:00 
01, c3, l3, 2017-01-01 07:54:30 
02, c5, l1, 2017-02-05 01:10:00 
02, c5, l2, 2017-03-01 19:00:10 
02, c5, l3, 2017-05-02 10:10:10 

私はペアが表1で検出されない表2のすべての行を削除したいですしかし、私のような

何か..... PNR = PNRとDMAX私の限られたMySQLの知識とこだわっている!= DT

上記の文は、基本的なLEFT JOINを使用しています

+0

はあなたを持っていますまだクエリを試しましたか? –

答えて

1
DELETE table2 
FROM table2 
     LEFT JOIN table1 
      ON table1.pnr = table2.pnr AND table1.dmax = table2.dt 
WHERE table1.pnr IS NULL 

を助けてください。これは、レコードが左に見つからない右の表にNULLを返し、それらは私たちが、我々はあなたが必要となり、where句

+0

はよく見つけた - 今、 – SEarle1986

+0

OKを改正 – SEarle1986

+0

があなたのクイックヘルプのためにあなたの先生に感謝基本的な説明を追加しました。期待通りの仕事です – Peca

0

にNULL IS追加、削除したいレコードです: DELETE FROM table2 WHERE NOT EXISTS (SELECT a.pnr, a.dmax FROM table1 a WHERE a.pnr = table2.pnr AND a.dmax = table2.dt)

+0

こんにちは、ありがとうございました。結局のところ、確かに、私は必要なロジックを実現するためにPHPプログラムを書きました(PHPはとにかく、メインプログラムの一部である)しかし、私は書き込みPHPをスキップしたかったです。あなたのクエリは私が予想したよりもはるかに多くの行を削除します 以下は@ SEarle1986がPHPと同じ結果を返すように答えています。とにかく、もう一度あなたの助けをありがとう – Peca

関連する問題