如何在另一个查询MySQL上进行更新查询


How do I do a Update Query on another Query MySQL?

我有这个查询:

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语句中使用相同的FROMWHERE

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);