Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.




SQLite - Update mee...
 
Deel:
Meldingen
Alles wissen

SQLite - Update meerere regels, met verschillende waarden, in een enkele query


 Hans
(@hans)
Noble Member Admin
Deelgenomen: 9 jaar geleden
Berichten: 2057
Topic starter  

Ik liep tegen een "probleem" aan waarbij ik in een enkele query,met SQLite, waarbij ik meerdere regels wilde updaten, iedere met hun eigen waarden
Ook had ik geen zin om een query uit te voeren voor elke regel.

Hoe kunnen we dit doen met SQLite?

Merk op: het kan zijn dat je hiervoor een nieuwere SQLite versie nodig hebt (versie 3.0 of hoger) omdat we het WITH statement gaan gebruiken.

Stel we hebben de volgende tabel:

MyFiles:
ID (PK), Filename, FileSize, FileDate

En we willen verschillende filenames updaten naar een nieuwe filename, op basis van een geslaagde rename - dus we kunnen niet lompweg alle regels in 1x updaten.

We kunnen dit echter wel in een enkele query zetten.
We gaan daarvoor het "WITH" statement gebruiken, en een soort van tijdelijke tabel "Tmp".

In onderstaand voorbeeld, zoek ik de benodigde ID's Tmp "tabel", en update daarmee de "MyFiles" regels naar de nieuwe filename.

WITH Tmp(id, newFilename) AS 
   (VALUES 
   (1, 'newfilename.txt'),
   (2, 'tweaking4all.txt'),
   (3, 'someothername.txt')
   ...
   (13, 'anothernewfilename.txt') )   
UPDATE "MyFiles" SET "Filename" = 
   (SELECT newFilename 
    FROM Tmp 
    WHERE "MyFiles"."ID" = Tmp.id)
 WHERE "MyFiles"."ID" IN (SELECT id FROM Tmp); 

BeantwoordenCiteren

Bevalt je wat je hier ziet, en wil je graag helpen? 

Uiteraard is de beste manier van helpen, door anderen hier te helpen met hun vragen. Maar je kunt ons ook op andere manieren helpen:

- Shop bijvoorbeeld bij Amazon, het kost je niks extra, maar het kan zijn dat wij een kleine commissie ontvangen,
- stuur me een koffie via PayPal ($5, $10, $20, or zelf kiezen),
- je kunt ook een Patreon worden,
- of BitCoin (BTC), of BitCoinCash (BCH) doneren.

Deel: