我有这个查询:
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。
答案 0 :(得分:3)
您可以在FROM
声明中使用相同的WHERE
和UPDATE
。
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;
答案 1 :(得分:0)
并非完全遵循,但为何不将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);
答案 2 :(得分:0)
假设您在id
表中有一个skapare
列来标识单行,那么您可以使用以下查询:
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);