2013-06-20 27 views
5

Mam podstawowy problem SQL, który doprowadza mnie do szaleństwa. Jeśli mam tablicę mySQL, np. Poniżej. Jak dodać kolejne 80+ wartości do kolumny 2, zaczynając od pierwszego pustego wiersza (w tym przykładzie wiersz 3).Dodaj kolumnę danych do istniejącej tabeli mySQL

Próbowałem wielu kwerend za pomocą INSERT lub UPDATE, ale najbliżej mam dodać wartości do kolumny 2, począwszy od ostatniej zdefiniowanej wartości identyfikatora (np. Wiersz 80ish).

ID | Column 2 | 
-------------------------------- 
    1 | value  | 
    2 | value  | 
    3 |    | 
    4 |    | 
    5 |    | 

etc 

Prawdziwy stół ma około 10 kolumn, wszystkie z danymi, ale po prostu trzeba dodaj zawartość (listę około 80 różnych ciągów znaków w formacie CSV do jednej z kolumn)

ja doceń to, jeśli ktoś mógłby wskazać mi właściwy kierunek.

Odpowiedz

3

Załadowałbym dane do osobnej tabeli o tej samej strukturze, a następnie zaktualizuj tabelę docelową za pomocą łączenia lub podzapytania w celu ustalenia, które kolumny są obecnie puste.

tj załadować tabeli tymczasowej, a następnie:

update target_table set column2 = (select column2 from interim_table where ... 
where column2 is null 

(powolny, ale intuicyjny)

update target table, interim_table 
set target table.column2 = interim_table.column2 
where target table... = interim_table... 
and target_table.column2 is null 

(lepsza wydajność)

+0

Dziękuję bardzo za pomoc davek. –

0

Dlaczego nie można najpierw uruchomić kwerendę, aby dowiedzieć się, pierwszy numer identyfikacyjny pustego rzędu? możesz użyć do tego celu SELECT COUNT(*) FROM TABLE_NAME.

następnie utworzyć pętlę for i wewnątrz uruchomić zapytanie INSERT, zaczynając od wartości zwróconej przez poprzednie zapytanie. tylko zadrapanie:

for(var id = last; id < totalOfQueries; id++) 
{ 
    var query = new MysqlCommand("INSERT INTO table VALUES ('" + id + "',....); 
} 
Powiązane problemy