UPDATE OR JOIN QUERY? - ms-access

I am trying to UPDATE or JOIN fields that are empty With fields from another table
UPDATE b SET b.b = c.c
WHERE
b.b = ""
AND
b.x = c.x
However, this query is not working.
Since I try to Update Information coming from another table - do I Need a join here?
How would I do that?

The syntax is
update t2
set t2.deptid = t1.deptid
from test1 t1, test2 t2
where t2.id = t1.id
and your logic into that.

Related

Update query with multiple tables and limit option

Update table2 t2
set t2.c1=t1.c1
inner join table1 t1 on ( t1.c2 = t2.c2)
where t2.c1 = "-1";
I want to execute the above query which will update the table2 column from table1 column ON INNER JOIN matching conditions. It is working fine. I am running a migration where the rows count are in million in both tables. I thought of limiting the update query in batches for query optimization but limit is not allowed in update query.
I can try with select query with limit option, but updating multiple columns would not work with this below query.
update table2 t2
set t2.c1=<?>
where t1.c2 = ( select c2 from table);
Can anyone help to use update query with optimization? Will updating millions row have any impact?
You could move the limiting clause to the joined table, like so:
update table2 t2
inner join (
select c1, c2
from table1
order by c2
limit ?, ?
) t1 on t1.c2 = t2.c2
set t2.c1 = t1.c1
where t2.c1 = -1
I am not sure what you really want to do, but you can update multiple columns with update and limit.
The following is fine:
update table2 t2
set t2.c1 = <?>,
t2.c3 = ?
where t1.c2 = ( select c2 from table)
limit 100;

Batch SQL query to update a field from different table

Table t1 - Fields a, b
Table t2 - Fields a, c
(a is common field between two tables)
I have added the field b in t2 and want to populate data for the same using references in t1
This can be done using following queries (e.g. a = 100, 101, ...)
update t2 set b = (select b from t1 where a = 100 limit 1) where a = 100;
update t2 set b = (select b from t1 where a = 101 limit 1) where a = 101;
Is there way this can be batched?
Use join:
update t2 join
t1
on t2.a = t1.a
set t2.b = t1.b;
You could also use a correlated subquery:
update t2
set b = (select t1.b from t1 where t1.a = t2.a);
However, non-matching values would be set to NULL.

Update query with multiple tables doesn't work

I'm trying to update a table in MySQL with data from another table.
UPDATE KassaticketRegels
SET soort = (SELECT t3.benaming
FROM KassaticketRegels AS t1 INNER JOIN Diensten AS t2 ON t1.dienst = t2.id INNER JOIN DienstGroepen AS t3 ON t2.dienstGroep = t3.id
WHERE t1.id = KassaticketRegels.id)
When i simulate the query, it gives me 304 matched rows.
But when i press go, i get the error "#1093 - Table 'KassaticketRegels' is specified twice, both as a target for 'UPDATE' and as a separate source for data".
How can i solve this?
Looking to your code seems you need an update on inner join
UPDATE KassaticketRegels t1
INNER JOIN Diensten AS t2 ON t1.dienst = t2.id
INNER JOIN DienstGroepen AS t3 ON t2.dienstGroep = t3.id
set t1.soort = t3.benaming

Setting undesired records rows value as NULL

When I run this update query in my server. Desired records are updating according to requirement. But all the other records reside in table1 set as NULL expect newly updated one. Any one there who can help on this. Thankyou in advance.
UPDATE MYDB1.`table1` t1
JOIN MYDB1.`table2` t2
ON t2.id = t1.table2_fill_id
JOIN MYDB2.tbl3 t3
ON t2.abc_id = t3.abc_id AND
t2.date = t3.opn_date AND
t2.flag IS TRUE
SET t1.value = t3.column15_value
WHERE code = "ABCD";
first set output for last tables like
update table4 d join
(select a.id, b.name from table1 a, table2 b where a.id = b.id) table3
on d.id = table3.id and d.code = 'abcd'
set d.name = table3.name
this is just an example
use your tables

MySQL UPDATE syntax with multiple tables using WHERE clause

Case:
How to update table1 with data from table2 where id is equal?
Problem:
When I run the following update statement, it updates all the records in table1 (even where the id field in table1 does not exist in table2).
How can I use the the multiple update table syntax, to update ONLY the records in table1 ONLY where the id is present in table2 and equal?
UPDATE table1,table2
SET table1.value=table2.value
WHERE table2.id=table1.id
Thanks in advance.
here's the correct syntax of UPDATE with join in MySQL
UPDATE table1 a
INNER JOIN table2 b
ON a.ID = b.ID
SET a.value = b.value
SQLFiddle Demo
EDIT
For MySql it'll be
UPDATE table1 t1 INNER JOIN
table2 t2 ON t2.id = t1.id
SET t1.value = t2.value
sqlfiddle
Original answer was for SQL Server
UPDATE table1
SET table1.value = table2.value
FROM table1 INNER JOIN
table2 ON table2.id=table1.id
sqlfiddle
You can try this:
UPDATE TABLE1
SET column_name = TABLE2.column_name
FROM TABLE1, TABLE2
WHERE TABLE1.id = TABLE2.id
UPDATE table1
SET table1.value = (select table2.value
WHERE table2.id=table1.id)