2011-12-27 135 views
0

我有兩個表格,一個叫做'行會',另一個叫*'guild_colours'*。 * guild_colours *中的字段爲id顏色(I.E:1:FFFFFF,2:000000 ..),表公會必須包含該顏色的十六進制值。由於* guilds_colours *中的可用顏色不斷變化(但以前可用的顏色是可以接受的)。Sub Select Inside UPDATE

我需要在用戶決定更改其公會的顏色時運行UPDATE查詢。我開始想出這樣的事情

UPDATE guilds g 
    SET g.primarycolour = (SELECT colour FROM guild_colours WHERE id = ?),         
    g.secondarycolour = (SELECT colour FROM guild_colours WHERE id = ?) 
    WHERE g.id = ? 

我在想,如果有什麼事快說,我可以做什麼?

+0

guild_colours中的id是指什麼?如果它只是一個顏色標識符,如果您根據列表驗證顏色並根據規則確定「以前可用的顏色是可接受的」,則不需要連接。 – pdubs 2011-12-27 22:17:49

回答

2

試試這個

UPDATE guilds AS g 
SET g.primarycolour = (
    SELECT c.colour FROM table_name AS c 
    WHERE c.id = 1 
), g.secondarycolour = (
    SELECT c.colour FROM table_name AS c 
    WHERE c.id = 2 
) 
WHERE g.id = 1 

注:我沒有,雖然測試。

+0

是的,我想出了類似的東西(見原文)。就像仔細檢查我正在做的事情是最有效率的。 :P – DominicEU 2011-12-27 22:21:11