2009-07-10 23 views
0

我有一個表:插入「偶數」行到現有的表中的MySQL

+----------------+--------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+----------------+--------------+------+-----+---------+----------------+ 
| fooID   | int(11)  | NO | PRI | NULL | auto_increment | 
| fooDetails  | varchar(200) | YES |  | NULL |    | 
| fooListingID | int(10)  | YES |  | NULL |    | 
| fooStatus  | tinyint(4) | YES |  | 0  |    | 
+----------------+--------------+------+-----+---------+----------------+ 

我想從一個類似的表與此表的數據合併,但我想對數據進行交替使該表中的現有數據將全部爲奇數「fooID」,新插入將全部爲偶數「fooID」。

想法?

+2

這聞起來非常糟糕的主意的開始。你爲什麼想做這個? 如果您想存儲該行的某個屬性,而不是依賴諸如在標識列的奇數/偶數狀態下存儲信息這樣的晦澀技巧,那麼添加另一列會更好。 如果你可以給出一些背景知道你爲什麼要這樣做,有人可能會提供更好的解決方案,以解決潛在的問題。 – JohnFx 2009-07-10 14:43:05

回答

3

我理解你的問題,因爲你讓讓所有的現有fooIDs奇,然後合併到該表中的一些新的,甚至fooIDs。

你可以很容易做到這一點:

#first make all the existing ids odd 
UPDATE oldtable SET fooID=fooID*2-1; 

#now insert rows from the other table, making sure the ids are even  
INSERT INTO oldtable (fooID,fooDetails,fooListingID,fooStatus) 
    SELECT fooID*2,fooDetails,fooListingID,fooStatus FROM newtable; 
1

您可以插入select語句的結果。使用modulo交替IDS:

INSERT INTO NewTable 
SELECT column1, column2 
FROM OldTable 
WHERE NOT id % 2 
+0

僅偶數行,你會想要「WHERE id%2」 – mkb 2009-07-10 14:34:54

+2

這個技術失去了OldTable的其他所有行,我不確定這是OP想要什麼? – 2009-07-10 14:37:20