Wie zum EINFÜGEN von Daten in einer bestimmten Spalte ohne Null-Werte in den anderen Spalten?
Ich habe eine Tabelle ("Tabelle1") mit 3 Spalten namens col1, col2 und col3 (jeder ist vom Datentyp VARCHAR) mit 4 Werten, wie unten gezeigt:
col1 col2 col3
datA1 datB1 datC1
datA2
Ich brauche eine Möglichkeit, um eine Daten-zu jeder Zeit, in jeder Spalte NICHT beeinflussen auf der anderen. Die sehr beliebte code im Internet ist, dass (sagen wir, wir müssen nur Daten hinzufügen, um die Spalten col2 und col3):
INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');
Aber es fügt neue Zeilen ein, wie unten:
col1 col2 col3
datA1 datB1 datC1
datA2
NULL datB2 datC2
Was ich wirklich brauchen, ist füllen Sie die Zeile, beginnend mit dem Wert "datA2" in der Spalte "col1" mit neuen Werten und Holen Sie sich die Tabelle wie unten:
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 Spalte Antworten für eine bestimmte Art von Werten (z.B.: name, Farbe, Größe). Was ich brauche ist nur eine Möglichkeit zum hinzufügen neuer Werte zu jeder Zeit in einer bestimmten Spalte haben, und haben Sie ohne Null und neue Zeilen, wenn es eine freie Zelle vor.
Es riecht wie schlechtes Datenbank-design..
was ist falsch mit nur ein
key
Spalte, und ein value
Spalte?Sie müssen auch schauen auf
update
Ändern einer vorhandenen Zeile ist ein UPDATE nicht ein INSERT. Gehen Sie vertikal statt horizontal.
InformationsquelleAutor Arsenii | 2015-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich die Lösung gefunden (eine Kette von logischen Operationen):
1)
CHECK
wenn es eine Zelle (in der target-Spalte) mit Werten, die entweder""
oderNULL
.2)
IF
es hat einer von denen dann schreiben Sie das ERSTE, halten Sie die Werte für die anderen Zellen in dieser Zeile auf Ihre Plätze (assumably wir verwendenUPDATE
))) ).3)
ELSE
fügen Sie einfach eine neue Zeile mit allenNULL
s in die andere Zelle in der Zeile.Wenn wir hinzufügen möchten, ein paar Werte in verschiedenen Spalten gleichzeitig dürfen wir bereiten unsere Abfragen für alle diese und führen Sie gleichzeitig (sorry für Tautologie).
Wenn wir brauchen, um ein paar Werte in der gleichen Spalte in einer Abfrage erstellen wir, mit Hilfe von loops (sich wiederholende Absätze 1 und 2 (oder Optional 3).
InformationsquelleAutor Arsenii
Diese können dazu dienen, Ihren Zweck 🙂
UPDATE
zum einfügen neuer Daten ist ein bisschen seltsamSo weit wie ich verstanden habe die Frage, er soll col2 und col3 row2 von NULL auf einige aussagekräftige Daten. Wenn er meinte, um neue Daten einfügen, er brauche nicht zu erwähnen, die bereits erstellt row2 🙂
InformationsquelleAutor Parth Bahuguna
Verwenden Sie die
UPDATE
- Anweisung, wenn Sie möchten, um Daten in einer vorhandenen Reihe. Wie diese zum Beispiel:Auch er sieht aus wie die Wurzel des Problems ist die schlechte Datenbank-design, aber diese Abfrage ist nur um Ihnen zu zeigen, wie hinzufügen von Daten zu einer vorhandenen Zeile.
Ja @ArseniiGorkin. Dies ist der Grund, warum wir immer sagen, Ihr Tisch-design ist fehlerhaft. Update der Tabelle und der Abfrage behebt sich selbst.
Wenn Sie wissen, welche Spalte die neuen Werte werde in dann Sie können ändern, die
WHERE
- Klausel, um zu prüfen, ob die Spalten mit den neuen Werte null sind, und wenn die anderen Spalten, die nicht aktualisiert werden sind nicht null. Aber dann diese änderung könnte die update-Zeilen, die Sie würde nicht wollen, Sie zu aktualisieren, also @SeanLange Kommentar ist korrekt. Fixieren Sie die Tabelle design erst dann Gedanken über die Abfrage.Vielen Dank für Ihre freundlichen Antworten! Jungs, das design ist nicht schlecht)) Warum denken Sie so? Ich brauche eine Tabelle mit einer Reihe von statischen Daten (Werte), die NIE bearbeitet werden sondern nur neue Hinzugefügt. Ich brauche Sie, ohne Sie leer sind (oder nill), die Zellen in den gleichen Spalten zwischen Werten (wie '1', '2', ", ", '3'). Ich brauche Ihnen bestellt. Deine Ratschläge sind unterschätzt und ich verstehe, dass ich es schaffen KÖNNTE, diff. Tabellen mit nur 1 Spalte jeder, aber ich möchte die Verwendung eines omni-Tabelle für alle Werte. Jede Spalte ist der TYP der Werte, die es enthält.
Wenn Sie könnte, zeigen sehr deutlich, warum Sie denken, dass die design falsch gelaufen ist, wäre ich sehr dankbar!
InformationsquelleAutor John Odom
Tabelle Struktur mit zwei Datenzeilen:
Jedes mal, wenn Sie einen Wert ändern wollen, müssen Sie prüfen, ob es schon da ist (für update), oder nicht (für einfügen). So, um den Wert zu ändern der
manager
Eigenschaft:InformationsquelleAutor paul
Angenommen, Sie haben die Tabelle
CLIENT_MASTER
ClientNo Namen
C00001 Ivan
C00002 Himanshu
Nun fügen Sie eine neue Spalte Stadt
Nun, wenn Sie möchten, fügen Sie die Werte in den bereits vorhandenen Zeilen, die Sie verwenden können, AKTUALISIEREN-Befehls.
Zum Beispiel
In der aktualisierten Tabelle ist
ClientNo Name City
C00001 Ivan Delhi
C00002 Himanshu NULL
InformationsquelleAutor Kushagra
Verwenden:
INSERT
syntax nichtWHERE
- Klausel mit Ausnahme bei der Verwendung vonINSERT INTO ... SELECT
InformationsquelleAutor akesh
Verwenden Sie diese, wenn der Wert
null
dann legen Sie einen leeren Wert.InformationsquelleAutor Raju