I need to update a SQLite table.
The table looks like:
ID | Address | CallNumber | RefID
-----+--------------------+-------------------------------------------
ef78 | library | 2002/13 | 100002
no56 | Lit | 0189 | 100003
rs90 | temp | | 100003
For every column with Address = "Lit" there is a column Address = 'temp' with the same RefID. Now I need to update each Address = "temp" with the value "CallNumber" from the column with the same RefID.
The updated table should look like:
ID | Address | CallNumber | RefID
-----+--------------------+-------------------------------------------
ef78 | library | 2002/13 | 100002
no56 | Lit | 0189 | 100003
rs90 | 0189 | | 100003
I tried this:
UPDATE Location
SET address = foo.callnumber
FROM (select RefID, CallNumber FROM Location) foo
WHERE foo.RefID=Location.RefID AND Location.Address = 'temp';
But all I got is a syntax error near "from".
Any clue?
UPDATE operations with subqueries that reference the same table object are supported only if all of the following conditions are true: The subquery either returns a single row, or else has no correlated column references. The subquery is in the UPDATE statement WHERE clause, using Condition with Subquery syntax.
In SQLite, a subquery is a query within a query. You can create subqueries within your SQL statements. These subqueries can reside in the WHERE clause, the FROM clause, or the SELECT clause.
SQLite doesn't support CTEs, window functions, or any of the like.
There are three commands in data manipulation language group: INSERT: This command is used to create a record. UPDATE: It is used to modify the records. DELETE: It is used to delete records.
UPDATE
commands do not have a FROM
clause.
Use a correlated subquery:
UPDATE Location
SET Address = (SELECT CallNumber
FROM Location L2
WHERE L2.RefID = Location.RefID
AND L2.Address = 'Lit')
WHERE Address = 'temp'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With