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

时间:2012-07-23 15:24:10

标签: php mysql sql

我有这个查询:

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。

3 个答案:

答案 0 :(得分:3)

您可以在FROM声明中使用相同的WHEREUPDATE

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