Sub Select Inside UPDATE

时间:2011-12-27 22:03:52

标签: sql

我有两个表,一个名为'guilds',另一个名为*'guild_colours'*。 * guild_colours *中的字段是 id color (IE:1:FFFFFF,2:000000 ..),表 guilds 包含颜色的十六进制值。由于* guilds_colours *内部的可用颜色不断变化(但以前可用的颜色是可以接受的)。

当用户决定更改公会的颜色时,我需要运行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 = ?

我想知道我能做的更快吗?

1 个答案:

答案 0 :(得分: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

注意:我没有测试它。