siemanko siemanko 02.06.2014, 16:15:24 2 #programowanie #sql #sqliteJak zrobić taki myk, żeby dodać rekord:- jeśli nie ma takiego to po prostu dodać- jeśli jest już taki to sprawdzić czy wartość z jednej kolumny jest większa od wartości którą chcę dodać- jeśli jest większa to zaktualizowaćCały czas robiłem > INSERT OR REPLACE INTOAle nie wiem jak sprawdzić warunek podczas REPLACE Cronox 77LatBedeNiedojrzaly
a.....r konto usunięte 02.06.2014, 16:22:04 0 select, potem sprawdzasz czy większa i ewentualnie update ;)
kao3991 kao3991 02.06.2014, 16:37:16 0 INSERT INTO tabelka (klucz, wartosc) VALUES (1, 7) ON DUPLICATE KEY UPDATE wartosc=IF(wartoscw mysql działa takie coś. zaktualizowanie wartoscstarą wartością nie spowoduje żadnej akcji, czyli cel osiągnięty - aktualizujesz tylko kiedy nowa wartość większa od starej.
siemanko siemanko 02.06.2014, 16:38:51 0 @kao3991: No właśnie wiem, że takie coś istnieje w mysql, ale niestety nie ma tego w sqlite :/ Szukam jakiegoś zamiennika.
plushy plushy 02.06.2014, 17:01:19 1 @siemanko: No przecież SQL to jak zabawa klockami lego. Patrzysz do manuala jakie masz klocki i potem klecisz razem: REPLACE INTO foo (bar, baz) SELECT bar, baz FROM (SELECT bar,baz FROM foo WHERE baz = 'a' UNION ALL SELECT 6, 'a') as q ORDER BY bar DESC LIMIT 1;http://sqlfiddle.com/#!7/1ce48/2Jak będzie potrzebne objaśnienie to pytaj o konkretny klocek. siemanko
siemanko siemanko 02.06.2014, 21:05:28 1 @plushy: Dzięki za pomoc, twój rozwiązanie pomogło :) plushy
Jak zrobić taki myk, żeby dodać rekord:
- jeśli nie ma takiego to po prostu dodać
- jeśli jest już taki to sprawdzić czy wartość z jednej kolumny jest większa od wartości którą chcę dodać
- jeśli jest większa to zaktualizować
Cały czas robiłem > INSERT OR REPLACE INTO
Ale nie wiem jak sprawdzić warunek podczas REPLACE
INSERT INTO tabelka (klucz, wartosc) VALUES (1, 7) ON DUPLICATE KEY UPDATE wartosc=IF(wartosc
w mysql działa takie coś. zaktualizowanie
wartosc
starą wartością nie spowoduje żadnej akcji, czyli cel osiągnięty - aktualizujesz tylko kiedy nowa wartość większa od starej.SELECT bar, baz
FROM
(SELECT bar,baz FROM
foo WHERE baz = 'a'
UNION ALL
SELECT 6, 'a') as q
ORDER BY bar DESC
LIMIT 1;
http://sqlfiddle.com/#!7/1ce48/2
Jak będzie potrzebne objaśnienie to pytaj o konkretny klocek.