it-swarm.com.de

Wie füge ich Daten in eine bestimmte Spalte ein, ohne NULL in den anderen Spalten?

Ich habe eine Tabelle ("table1") mit 3 Spalten namens col1, col2 und col3 (jede ist VARCHAR) mit 4 Werten wie folgt:

col1   col2   col3
datA1  datB1  datC1
datA2  

Ich brauche die Fähigkeit, jederzeit Daten in eine Spalte einzufügen, die sich nicht auf die anderen auswirkt. Der sehr verbreitete Code im Internet ist folgender (sagen wir, dass wir nur Daten zu den Spalten col2 und col3 hinzufügen müssen):

INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');

Aber es fügt neue Zeilen hinzu, wie unten:

col1   col2   col3
datA1  datB1  datC1
datA2
NULL   datB2  datC2

Was ich wirklich brauche, ist die Zeile beginnend mit dem Wert "datA2" in der Spalte "col1" mit neuen Werten zu füllen und die Tabelle wie folgt zu erhalten:

col1   col2   col3
datA1  datB1  datC1
datA2  datB2  datC2

Wenn mir jemand helfen könnte, wäre ich sehr dankbar !!! Danke . Arsenii.


Update: Die Tabelle hat 3 Spalten und jede Spaltenantwort für einen bestimmten Wertetyp (z. B. Name, Farbe, Größe). Was ich brauche, ist nur eine Möglichkeit, jederzeit neue Werte in einer bestimmten Spalte hinzuzufügen und sie ohne Null und neue Zeilen zu haben, wenn zuvor eine freie Zelle vorhanden ist.

6
Arsenii

Ich habe die Lösung gefunden (eine Kette logischer Operationen):

1) CHECK wenn sich in der Zielspalte eine Zelle mit Werten entweder "" oder NULL befindet.

2) IF es hat eine von diesen und schreibt die ERSTE neu, wobei die Werte der anderen Zellen in dieser Zeile an ihrer Stelle bleiben (vermutlich verwenden wir UPDATE)))).

3) ELSE füge einfach eine neue Zeile mit allen NULLs in der anderen Zelle der Zeile hinzu.

Wenn wir einige Werte gleichzeitig in verschiedene Spalten einfügen möchten, können wir für alle diese Abfragen vorbereiten und sie dann gleichzeitig ausführen (Entschuldigung für die Tautologie).

Wenn wir innerhalb einer Abfrage einige Werte in dieselbe Spalte einfügen müssen, können Sie sie mithilfe von Schleifen vorbereiten (wobei die Absätze 1 und 2 (oder optional 3) wiederholt werden).

1
Arsenii
UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;

Dies kann Ihrem Zweck dienen :)

1
Parth Bahuguna

Sie müssen die Anweisung UPDATE verwenden, wenn Sie einer vorhandenen Zeile Daten hinzufügen möchten. So zum Beispiel:

UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'

Es sieht auch so aus, als sei der Grund Ihres Problems ein schlechter Datenbankentwurf, aber diese Abfrage soll Ihnen nur zeigen, wie Sie einer vorhandenen Zeile Daten hinzufügen.

0
John Odom

Angenommen, Sie haben die Tabelle
CLIENT_MASTER

ClientNo Name
C00001 Ivan
C00002 Himanshu

Jetzt fügen Sie eine neue Spalte Stadt hinzu 

ALTER table CLIENT_MASTER  
ADD( City varchar(10));

Wenn Sie jetzt Werte in bereits vorhandene Zeilen hinzufügen möchten, können Sie den Befehl UPDATE verwenden.
Zum Beispiel 

UPDATE CLIENT_MASTER  
SET City='Delhi'  
WHERE ClientNo='C00001';

Die aktualisierte Tabelle ist
ClientNo Name Ort
C00001 Ivan Delhi
C00002 Himanshu NULL

0
Kushagra

Bei einer Tabellenstruktur mit zwei Datenzeilen:

key         value
--------------------
team        accounts
manager     jeff

Jedes Mal, wenn Sie einen Wert ändern möchten, müssen Sie prüfen, ob er bereits vorhanden ist (für das Update) oder nicht (für das Einfügen). So ändern Sie den Wert der manager-Eigenschaft:

if exists(select * from keyValues where key = 'manager')
    update keyValues set value = 'mike' where key = 'manager'
else
    insert into keyValues ('manager', 'mike')
0
paul