JosephGourvenec
JosephGourvenec

Reputation: 13

MySQL Update, Set with Where not working?

I have read other posts and I really don't understand what I am doing wrong here because it is such a simple statement.

anything in '()' are comments

Query:

[UPDATE users, sites 
SET users.idSiteRegUsers='1'
WHERE sites.SiteActivateSites='DEL' ]

(TBL's to select to update within the whole query) (Setting the users tbl idSiteRegUsers to 1) (Where only the sites in tbl sites = DEL)

I've also read http://bugs.mysql.com/bug.php?id=52651 and tried changing the INT to VARCHAR and UPDATING 0 to DEL due to the bug but still same result.

Issue:

I have 2129 records that need updating as found using a simple select statement to understand the number of results.

([SELECT
sites.SiteActivateSites,
sites.id_Sites,
users.idSiteRegUsers,
users.CompanyNameUsers,
sites.LinkNameSites
FROM
users
INNER JOIN sites ON users.idSiteRegUsers = sites.id_Sites
WHERE
sites.SiteActivateSites != '1']) 'simple'

But the UPDATE query updates all 4000+ records, not just the records that = DEL but the ones that are reference to another value e.g. = 1.

Have I missed something?

Cheers, Joe

Upvotes: 1

Views: 1602

Answers (1)

eggyal
eggyal

Reputation: 125855

Just as with your SELECT command, you need to tell MySQL how the tables are joined: your UPDATE is currently doing a full cartesian product of both tables (with every row in users joined with every row in sites - therefore the WHERE condition filtering on sites is still resulting in a match on every record from users).

Try instead:

UPDATE users JOIN sites ON users.idSiteRegUsers = sites.id_Sites
SET    users.idSiteRegUsers='1'
WHERE  sites.SiteActivateSites='DEL'

Upvotes: 2

Related Questions