2011-07-01 11 views
7

Jak skopiować zaznaczone wiersze z tabeli mySql i wstawić przy zmianie jedynie wartości klucza. Czy mogę wybrać i wstawić w tym samym zapytaniu?mySql kopiuje wiersze do tej samej tabeli z wartością klucza zmienioną (nie zastępując istniejącą)

Aby być precyzyjnym, co chcę wyglądałby następująco:

cols stołowe, ID i ISO3 są klawisze:
[ID] [ISO3] [Tekst]
1, POL, tekst w języku angielskim
2, POL, Inny tekst w języku angielskim
3, POL, bla bla
1, Jap, 与 え ら れ た 枠

Po wkładki chcę mój stół wyglądać tak:
1, POL, Tekst w języku angielskim
2 PLK Another: Angielski
3 PLK, bla
1, Jap, 与 え ら れ た 枠
2, Jap, Innym: Angielski
3 JPN, bla

Odpowiedz

18
INSERT INTO your_table (ID, ISO3, TEXT) SELECT ID, 'JPN', TEXT FROM your_table WHERE ID IN (list_of_ id's) 

jeśli chcesz aby zmienić wartość w jednej komórce, po prostu twardo wpisz wartość zamiast wybierać z tabeli (tak jak zrobiłem to z "JPN").

+0

dzięki doprowadziło mnie w dobrym kierunku – Muleskinner

+4

dla tej pracy wydaje się, że wartości powinny być usunięte – Muleskinner

+2

Żeby było jasne, to co miałem: INSERT INTO my_table (col1, col2, col3) WYBIERZ "mynewvalue", col2, col3 FROM my_table gdzie col2 = "value" –

4

Jeśli klucz jest auto_increment i masz strukturę tabeli jak primary_key | col1 | col2 | col3 następnie można zrobić coś wzdłuż linii

INSERT INTO table (
    col1, col2, col3 
) SELECT col1, col2, col3 
FROM table 
WHERE primary_key IN(1, 2, 45, 54, 774, 4434 /* etc */); 
0

można zrobić

insert into your_table (SELECT field1, field2,(changed_value_for_field3) as field3 FROM your_table where your_condition); 
Powiązane problemy