Solved

difference between two similar tables

Posted on 2012-12-29
4
338 Views
Last Modified: 2013-01-12
CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes;

identical tables

and then recipes_new inserts a new value


is there a diff command
so I can see difference between recipes and recipes_new
0
Comment
Question by:rgb192
  • 2
  • 2
4 Comments
 
LVL 59

Expert Comment

by:Kevin Cross
ID: 38730768
I cannot recall using EXCEPT in MySQL. EXCEPT in SQL Server lets you see the values in the first table that are not in the second. This is not available in MySQL to my knowledge, but you can give it a try.

SELECT column_that_should_be_unique FROM recipes_new
EXCEPT
SELECT column_that_should_be_unique FROM production.recipes
;

Open in new window


Here is an alternative that will work in most database systems.

SELECT column_that_should_be_unique 
FROM recipes_new n
WHERE NOT EXISTS (
    SELECT 1
    FROM production.recipes o
    WHERE o.column_that_should_be_unique = n.column_that_should_be_unique 
)
;

Open in new window


It multiple columns are necessary to match-up rows, then just alter the WHERE clause accordingly. Remember that an auto-numbered field is not sufficient as the two tables will increment at different paces; therefore, the same row in both tables may have a different id if it is a simple incrementing integer.
0
 

Author Comment

by:rgb192
ID: 38749868
SELECT id FROM recipes_new
EXCEPT
SELECT id FROM .recipes
;


Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id FROM recipes' at line 3




SELECT id
FROM recipes_new n
WHERE NOT EXISTS (
    SELECT 1
    FROM recipes o
    WHERE o.id = n.id
)
;


no results returned
0
 
LVL 59

Accepted Solution

by:
Kevin Cross earned 500 total points
ID: 38750765
As I said, EXCEPT is a SQL Server syntax that I did not believe is available in MySQL, so the first result I expected. The second indicates to me that the query ran, but there are no rows that belong in the new table that are not in the original.

Are you expecting some to be there?

If so, the issue may be that the id does not properly match rows. For example, if id is an autonumber, you will successfully match every row if both tables have the same number of rows (i.e., 1 = 1). However, if row one for one table has different values than row one for the other, you really have a non-existent row. Therefore, the trick is to find the column or columns that accurately identify a row.
0
 

Author Closing Comment

by:rgb192
ID: 38770179
the where not exists works when I add rows into the first table

thanks
0

Featured Post

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction In this installment of my SQL tidbits, I will be looking at parsing Extensible Markup Language (XML) directly passed as string parameters to MySQL 5.1.5 or higher. These would be instances where LOAD_FILE (http://dev.mysql.com/doc/refm…
Introduction Since I wrote the original article about Handling Date and Time in PHP and MySQL (http://www.experts-exchange.com/articles/201/Handling-Date-and-Time-in-PHP-and-MySQL.html) several years ago, it seemed like now was a good time to updat…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question