简体   繁体   中英

Update third table by joining two table

I want to update third table "temp_table1" by performing some operations with other two tables "temp_table" "resource1".

temp_table:

+-----------+
| temp      | 
+-----------+
|  0.46574  | 
+-----------+

resource1:

+------------------+
| evaluation_value |
+------------------+
|         0.23     | 
|         0.56     |
|         0.76     |
|         0.25     |
|         0.79     |
+------------------+

temp_table1:

+-----------+
| temp      | 
+-----------+
|    0      | 
+-----------+

Now, I want to subtract temp value from "temp_table" with all the evaluation_value from "resource1" and save the subtracted values which are less than 0.25 in "temp_table1" and I want to update the "temp_table1" every time I run the query.

I constructed the following query for this, but I am going wrong somewhere:

update temp_table1 t1
set t1.temp = (
    select (e.evaluation_value - t.temp) < 0.25
    from resource1 e
    Inner join temp_table t)

Thank you!!!

Each time you run the query, you should clear existing values, then populate new ones:

TRUNCATE TABLE temp_table1
GO

INSERT INTO temp_table1
SELECT
    e.evaluation_value - t.temp
FROM temp_table t
    CROSS JOIN resource1 e
WHERE (e.evaluation_value - t.temp) < 0.25

That's because UPDATE only changes data in currently existing rows, and that is not your intention - you wish to get new results every time. Also, number of rows might vary each run, so UPDATE is not a good candidate here.

Another problem is with the JOIN type you picked: INNER is used in situations where there is a strict mapping from records in one table to the other (like an ID which exists in both tables) and it requires you to specify that mapping with ON keyword, while CROSS just joins everything in first table with everything in the other, like you wish to do (and so, no mapping is required).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM