Solved

Update Query with multiple WHERE conditions

Posted on 2008-09-29
9
953 Views
Last Modified: 2012-06-22
I think this should be pretty easy for someone to answer.  I'm trying to clean up our data a bit and I have an update query that doesn't seem to be updating all the rows I thought it would.  The second I add multiple INs to the WHERE clause, it updates far fewer rows than I would expect.  When I refresh a report based on this data, there are still records with incorrect data I was trying to update.
UPDATE CustLine
SET Style = 'CARPET CLEANING - IN-PLANT', Pr_Code = '92'
WHERE Pr_Code IN ('91', '92') AND JobCostDate <= '20020101' AND Style IN 
('BROT-IN CLEANING', 'IN-PLANT CLEANING G','IN-PLANT CLEANING P',
'IN-PLANT CLEANING S', 'PICK-UP CLEANING', '1N-PLANT CLEANING G',
'.N-PLANT CLEANING S', '1I-PLANT CLEANING S', '1N-PLANT CLEANING G',
'CARPET CLEANED', 'CARPET CLEANING', 'CLEAN');

Open in new window

0
Comment
Question by:gsszuber
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 22600840
what is the data type of Style column, please?
0
 
LVL 26

Expert Comment

by:Zberteoc
ID: 22601278
The question is why do you think it should have updated more rows than it did?

Can you give an example of such a row?
0
 
LVL 11

Expert Comment

by:Goodangel Matope
ID: 22601651
could you please show the SQL of the report that is showing the rows that have not changed?
0
Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

 

Author Comment

by:gsszuber
ID: 22601969
Rather than showing you the report, which covers everything I'm trying to clean up (which just keeps growing), I thought it would be simpler to just roll back the db to a recent backup of the live db and run some quick select queries before and after the update.
Before.png
UpdateQuery.png
After.png
0
 
LVL 26

Accepted Solution

by:
Zberteoc earned 250 total points
ID: 22605040
Your Before and After images don't show the CARPET CLEANING - IN-PLANT style in order to tell if it was changed.

On the other hand there's nothing wrong with the update statement and as we can see it was executed. The fact that you expected different results doesn't really matter, it was executed the way it was written. If you want different results maybe you should change the update statement accordingly.
0
 
LVL 5

Expert Comment

by:brady1408
ID: 22607193
I would have a hard time knowing more unless I see more about the data types that you are using, but here are a couple suggestions.

1. You are not using a FROM statement in your update, this tells sql the table source to use when using a join or a where clause.
2. are you using a varchar for your style? if not you might want to trim it I don't know how sql handles spaces at the beginning or end of a string

and example would be
UPDATE CustLine
SET Style = 'CARPET CLEANING - IN-PLANT', Pr_Code = '92'
WHERE Pr_Code IN ('91', '92') AND JobCostDate <= '20020101' AND TRIM(Style) IN 
('BROT-IN CLEANING', 'IN-PLANT CLEANING G','IN-PLANT CLEANING P',
'IN-PLANT CLEANING S', 'PICK-UP CLEANING', '1N-PLANT CLEANING G',
'.N-PLANT CLEANING S', '1I-PLANT CLEANING S', '1N-PLANT CLEANING G',
'CARPET CLEANED', 'CARPET CLEANING', 'CLEAN');

Open in new window

0
 
LVL 5

Expert Comment

by:brady1408
ID: 22607203
example with from would look like this
UPDATE CustLine
SET Style = 'CARPET CLEANING - IN-PLANT', Pr_Code = '92'
FROM CustLine
WHERE Pr_Code IN ('91', '92') AND JobCostDate <= '20020101' AND TRIM(Style) IN 
('BROT-IN CLEANING', 'IN-PLANT CLEANING G','IN-PLANT CLEANING P',
'IN-PLANT CLEANING S', 'PICK-UP CLEANING', '1N-PLANT CLEANING G',
'.N-PLANT CLEANING S', '1I-PLANT CLEANING S', '1N-PLANT CLEANING G',
'CARPET CLEANED', 'CARPET CLEANING', 'CLEAN');

Open in new window

0
 

Author Comment

by:gsszuber
ID: 22607425
CustLine.Style is a varchar(80).  I'm going back to my office momentarily, but probably won't have more time to put into this until tonight.  I'm going to roll back the db again and run my query again, this time saving the results as a .pdf so you can observe exactly what changed.  Thanks all for you help!  I'm raising the points because this seems to be more complicated than I had originally thought it would be.
0
 

Author Closing Comment

by:gsszuber
ID: 31501380
I'm rather embarrassed right now.  :-| The query was doing exactly what I was telling it to do.  I had JobCostDate <= '20020101' when it should have been JobCostDate >= '20020101'.  Since my select query and reports were written correctly and my update query was not, naturally it didn't produce the results I was expecting.
0

Featured Post

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

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

Introduction SQL Server Integration Services can read XML files, that’s known by every BI developer.  (If you didn’t, don’t worry, I’m aiming this article at newcomers as well.) But how far can you go?  When does the XML Source component become …
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.

740 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