Reputation: 992
I have this Query:
SELECT notiser.notis AS notis
, skapare.kategoriId
, skapare.kategori AS kategori
FROM notiser, skapare, anvandare
WHERE skapare.kategori = 2
AND skapare.kategoriId = 448
AND skapare.id = notiser.skapareId
AND anvandare.id = skapare.anvandareId;
It gives me the Result:
notis kategoriId kategori
Hello! 448 2
Hello2! 448 2
Hello3! 448 2
I want to change the value of the "kategori" to 3, on just these specific results.
Is it possible?
Im using PHP and mysql.
Upvotes: 2
Views: 92
Reputation: 6030
assume that you have an id
column in skapare
table to indentify single rows, then you can use the following query:
UPDATE skapare set kategori=3
WHERE skapare.id IN
(SELECT skapare.id
FROM notiser, skapare, anvandare
WHERE skapare.kategori = 2
AND skapare.kategoriId = 448
AND skapare.id = notiser.skapareId
AND anvandare.id = skapare.anvandareId);
Upvotes: 0
Reputation: 227200
You can just use the same FROM
and WHERE
in the UPDATE
statement.
UPDATE notiser, skapare, anvandare
SET skapare.kategori = 3
WHERE skapare.kategori = 2
AND skapare.kategoriId = 448
AND skapare.id = notiser.skapareId
AND anvandare.id = skapare.anvandareId;
Upvotes: 3
Reputation: 14237
Not entirely following, but why not constrain skapare.kategori
to 3
SELECT notiser.notis AS notis
, skapare.kategoriId
, skapare.kategori AS kategori
FROM notiser, skapare, anvandare
WHERE skapare.kategori = 3
AND skapare.kategoriId = 448
AND skapare.id = notiser.skapareId
AND anvandare.id = skapare.anvandareId;
Update I think I understand now:
UPDATE skapare SET skapare.kategori = 3 WHERE skapare.id IN(SELECT notiser.skapareId
FROM notiser, skapare, anvandare
WHERE skapare.kategori = 2
AND skapare.kategoriId = 448
AND skapare.id = notiser.skapareId
AND anvandare.id = skapare.anvandareId);
Upvotes: 0