Вставьте «четные» строки в существующую таблицу в MySQL - PullRequest
0 голосов
/ 10 июля 2009

У меня есть таблица:

+----------------+--------------+------+-----+---------+----------------+
| 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 ]

3 голосов
/ 10 июля 2009

Я интерпретировал вашу проблему, когда вы пытаетесь сделать все существующие fooID нечетными, а затем объединить в эту таблицу несколько новых, даже fooID.

Вы можете сделать это довольно легко:

#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 голос
/ 10 июля 2009

Вы можете вставить результат оператора выбора. Используйте по модулю для чередующихся идентификаторов:

INSERT INTO NewTable
SELECT column1, column2
FROM OldTable
WHERE NOT id % 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...