• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 965
  • Last Modified:

Update Query with multiple WHERE conditions

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
gsszuber
Asked:
gsszuber
  • 3
  • 2
  • 2
  • +2
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
what is the data type of Style column, please?
0
 
ZberteocCommented:
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
 
Goodangel MatopeSoftware ArchitectCommented:
could you please show the SQL of the report that is showing the rows that have not changed?
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
gsszuberAuthor Commented:
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
 
ZberteocCommented:
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
 
brady1408Commented:
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
 
brady1408Commented:
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
 
gsszuberAuthor Commented:
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
 
gsszuberAuthor Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

  • 3
  • 2
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now