Solved

Update Query with multiple WHERE conditions

Posted on 2008-09-29
9
954 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 27

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
Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

 

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 27

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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
I have a large data set and a SSIS package. How can I load this file in multi threading?
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

731 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