我有这个查询:
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;
它给了我结果:
notis kategoriId kategori
Hello! 448 2
Hello2! 448 2
Hello3! 448 2
我想将"kategori"的值更改为3,仅针对这些特定结果。
有可能吗?
我使用PHP和mysql。
您可以在UPDATE
语句中使用相同的FROM
和WHERE
。
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;
不完全遵循,但为什么不将skapare.kategori
约束为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 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);
假设skapare
表中有一个id
列来标识单行,则可以使用以下查询:
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);