2013-01-04 157 views
2

所以,我得到了一个表名users与字段名称country和字段名idSQL语法问题

我也得到了一个表名Players用字段名gameID(也它得到了ID用户的user_id ID上users

我想提出一个UPDATE,在现场gameID从表PlayersSTEAMID_0xxxx改变STEAMID_1xxxxxcountry从表users is = uk

我想是这样的:

UPDATE Players 
set steamid=steam_1 
WHERE steamid=steamid_0 AND country = (SELECT country 
             from users 
             where country=pt) 

所以我的第一个疑问,如何改变只是一个词(例如:steam_0:1:2345 to steam_1:1:2345)的一部分,它是Steam_0* ?也是,我该如何选择国家?我的理论看起来很愚蠢:|

我知道这是错误的,也许你可以点我在正确的方向

预先感谢您

+0

它最好t o在这里发布你的模式(以及一些示例数据) – Raptor

回答

1

您需要JOINusers获得国家:

要交换steam_0steam_1 ,您可以使用REPLACE()字符串功能:

UPDATE 
    Players 
    JOIN users ON Players.user_id = users.id 
SET 
    /* REPLACE() the beginnging steamid_0 with steamid_1 */ 
    steamid = REPLACE(steamid, 'steamid_0:', 'steamid_1:') 
WHERE 
    /* The whole subquery can then be replaced with this: */ 
    users.country = 'pt' 
    /* Not strictly necessary... */ 
    AND LEFT(steamid, 10) = 'steamid_0:' 
+0

这个国家在“用户”表上并不在“玩家”上,所以我认为我需要做一些选择? – user676032

+0

@ user676032查看更新。我为''用户添加了一个'JOIN'来处理这个问题。 –

+0

,如果“users”表位于不同的数据库上?玩家表在一个数据库中,而用户表在不同的数据库上? – user676032