2012-07-23 71 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);