2

我有这个查询:

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

我想将“类别”的值更改为 3,仅针对这些特定结果。

是否可以?

我使用 PHP 和 mysql。

4

3 回答 3

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;
于 2012-07-23T15:30:57.550 回答
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);
于 2012-07-23T15:28:12.130 回答
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);
于 2012-07-23T15:31:29.213 回答