2012-01-18 98 views
0

我有兩個表:如何根據另一個表中的值搜索並替換某些列值?

CREATE TABLE Table1 (
    ID VARCHAR(15), 
    Value INT 
); 
INSERT INTO Table1 (`ID`, `Value`) 
    VALUES 
('A', 21), 
('B', 50), 
('C', 10); 

CREATE TABLE Table2 (
    ID VARCHAR(15) 
); 
INSERT INTO Table2 SELECT ID FROM Table1; 

我不得不重新命名錶2中,其值在表1 < 20「Low_ < ID名稱>」所有的ID。在此之後, 「表2」 應該是這樣的:

mysql> SELECT ID FROM Table2 
+-------+ 
| ID | 
+-------+ 
| A  | 
| B  | 
| Low_C | 
+-------+ 

什麼查詢將做到這一點?

+1

更改主鍵值是一個非常糟糕的想法 – Phil 2012-01-18 00:26:28

+0

ID不是主鍵。在我的原始數據庫中,我有一個組合鍵(這裏沒有列出)。這是原始模式的非常粗略的表示。 – Ank 2012-01-18 00:27:50

+1

適當的[示例代碼](http://sscce.org/)(這裏是SQL語句)比任何ad hoc模式和示例數據格式更有用。請使用'CREATE TABLE'和'INSERT ... VALUES'作爲樣本。所需的結果不需要作爲示例代碼呈現,因爲結果是代碼的輸出,而不是代碼本身。 – outis 2012-01-18 00:33:12

回答

6
UPDATE Table2 
LEFT JOIN Table1 ON Table2.ID=Table1.ID 
SET Table2.ID = CONCAT('Low_',Table2.ID) 
WHERE Table1.Value<20 

但作爲@Phil說......你確定你想改變你的(大概)主鍵ID

+0

+1不使用子查詢:) – Phil 2012-01-18 00:51:58

1

也許類似

UPDATE Table2 SET ID = "Low_" + ID 
    WHERE ID IN (SELECT ID FROM Table1 WHERE Value < 20) 
2
UPDATE Table2 SET ID = CONCAT('Low_', ID) 
WHERE ID IN (SELECT ID FROM Table1 WHERE `Value` < 20) 
相關問題