2012-07-23 72 views
2

我有这个疑问:如何在另一个查询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 

我想要的“驾驶员学校”的值更改为3,从仅仅这些具体成果。

可能吗?

我使用PHP和MySQL。

回答

3

你可以只使用在相同FROMWHEREUPDATE声明。

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; 
+0

是的,这是行得通!其他答案也有帮助,但我得到了synax错误。谢谢 – oBo 2012-07-23 15:35:14

+0

不客气:-) – 2012-07-23 15:35:43

0

不完全以下,但为什么不限制skapare.kategori3

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

他想''UPDATE' skapare.kategori'为3 – 2012-07-23 15:29:00

+1

我想要更改数据库中的值,而不是在skapare.kategori中用“3”显示值。 – oBo 2012-07-23 15:29:10

+0

已更新的答案。 – 2012-07-23 15:30:38

0

假设你有一个idskapare表indentify单行,那么你可以使用下面的查询:

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