Update values on one table from another table when criteria is met

我们两清 提交于 2021-01-29 08:01:55

问题


I would like to update one table in my db depending on a value from another table. The 2 tables are:

 QUOTES(
   QUOTE_ID,
   APPROVAL
 )

PRODUCTS(
  QUOTE_ID_FK,
  LINE_APPROVAL
)

I need to update all PRODUCTS.LINE_APPROVAL to 'Y' where the QUOTES.APPROVAL = 'Y'

I have tried something like this but fails as I don't have the syntax quite right but hopefully you can see what I'm trying to achieve:

UPDATE 
    PRODUCTS
SET 
    LINE_APPROVAL = 'Y'
FROM
    QUOTES,
    PRODUCTS            
WHERE
    PRODUCTS.QUOTE_ID = QUOTES.QUOTE_ID_FK
AND
    QUOTES.APPROVAL = 'Y'

Any help would be appreciated.


回答1:


this query will, update all products which have a value in PQUOTE_ID that appears in the quotes table column Quote_ID_FK (and approval is Y).

UPDATE 
    PRODUCTS
SET 
    LINE_APPROVAL = 'Y'
WHERE 
    PQUOTE_ID IN 
       (SELECT
           QUOTE_ID_FK 
        FROM
           QUOTES
        WHERE
           APPROVAL = 'Y')



回答2:


The @joelharkes answer with the WHERE ... IN will work if you adjust the ID column names. You can also use MERGE:

MERGE INTO Products
USING (
  SELECT Quote_ID FROM Quotes
  WHERE Approval = 'Y') QtApp
ON (Products.Quote_ID_FK = QtApp.Quote_ID)
WHEN MATCHED THEN
  UPDATE SET Line_Approval = 'Y'



回答3:


try this

  UPDATE PRODUCTS
    SET  LINE_APPROVAL = 'Y'
    FROM PRODUCTS
    INNER JOIN QUOTES ON PQUOTE_ID = QUOTE_ID_FK
    WHERE  APPROVAL = 'Y'

Ya

UPDATE  PRODUCTS 
SET LINE_APPROVAL = 'Y'
WHERE PQUOTE_ID IN 
(SELECT QUOTE_ID_FK  FROM
QUOTES WHERE APPROVAL = 'Y')



回答4:


You have your column names in the wrong place. Your query should be:

UPDATE  PRODUCTS
SET     LINE_APPROVAL = 'Y'
FROM    QUOTES, PRODUCTS            
WHERE   PRODUCTS.QUOTE_ID_FK = QUOTES.QUOTE_ID
AND     QUOTES.APPROVAL = 'Y'

Or INNER JOIN:

UPDATE  PRODUCTS
SET     LINE_APPROVAL = 'Y'
FROM    PRODUCTS
        INNER JOIN QUOTES ON PRODUCTS.QUOTE_ID_FK = QUOTES.QUOTE_ID
WHERE   QUOTES.APPROVAL = 'Y'


来源:https://stackoverflow.com/questions/16168253/update-values-on-one-table-from-another-table-when-criteria-is-met

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!