2013-01-04 119 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