We help IT Professionals succeed at work.

Delete rows from table based column values found in other table

fastfind1
fastfind1 asked
on
982 Views
Last Modified: 2013-12-12
I have a working web application with multiple tables.  I need to write a small PHP script that when it runs, deletes records from a table if the value of its first column is NOT found in a second table.

Let me explain.

I have two tables that this PHP script needs to compare, call them table1 and table2.  In each table there is a column called mid.  

I need a script that will delete a record in table1 if the value of the mid in table1 is not in table2, but if the value of the mid in table1 is in table2, the record is left untouched.

The values of mid is always numerical, such as 12345.

So the PHP script needs to look at all records in table1 (which may be one record or 1000 of records.  Note that after this PHP script runs, the remaining records are copied to another table and table1 is emptied).

Note that table2 does not have any duplicate values for mid.  So in table2, a value for mid is either present once or never.

So I need a PHP script that says this is the value of the mid in table1, if it is found in the table2 mid column, then the record in table1 stays.  If the value of the mid in table1 is NOT found in the mid column in table2, then the row in table1 is deleted.

Comment
Watch Question

Chief Technology Officer
CERTIFIED EXPERT
Most Valuable Expert 2011
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
Kevin CrossChief Technology Officer
CERTIFIED EXPERT
Most Valuable Expert 2011

Commented:
If you are asking for the PHP code as well, take a look at this:
http://www.php-mysql-tutorial.com/mysql-update-and-delete.php.

You would just change $query to this:
$query = "DELETE FROM table1 WHERE NOT EXISTS (SELECT 1 FROM table2 WHERE table2.mid = table1.mid)";

Hope that helps.

Regards,
Kevin

Author

Commented:
Can you help me understand SELECT 1 FROM?  I understand SELECT mid FROM table2.  But I don't understand SELECT 1 FROM table2.
Kevin CrossChief Technology Officer
CERTIFIED EXPERT
Most Valuable Expert 2011

Commented:
You can use SELECT mid FROM table2 there as well, but since we are checking where this record doesn't exist at all using "FROM table2 WHERE table2.mid = table1.mid" then it doesn't matter what we sellect as we are just checking for a row.  We could SELECT NULL here and it would work the same.

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.