Solved

Update Query with multiple WHERE conditions

Posted on 2008-09-29
9
948 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
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 142

Expert Comment

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

Expert Comment

by:Zberteoc
Comment Utility
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
Comment Utility
could you please show the SQL of the report that is showing the rows that have not changed?
0
 

Author Comment

by:gsszuber
Comment Utility
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
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 26

Accepted Solution

by:
Zberteoc earned 250 total points
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Suggested Solutions

Having an SQL database can be a big investment for a small company. Hardware, setup and of course, the price of software all add up to a big bill that some companies may not be able to absorb.  Luckily, there is a free version SQL Express, but does …
Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Viewers will learn how the fundamental information of how to create a table.

772 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now