2009-05-27 14 views
0

Bitte helfen Sie mir.Ich inkrementiere numerischen Wert, wenn es den gleichen Datensatz gibt, oder einfügen möchte 0 tun, wenn es nicht

select * from hoge where id=xxx; 

Wenn es ein Datum ist, tut ich es, es zu tun, aber wenn ich diesen Schritt umzusetzen, gibt es, wenn in einem Programm, und legen Sie hoge Einstelldaten = 0 ist mühsam, wenn Update hoge Satz data = Daten +1, ein Ergebnis sind 0 Zeilen.

Kannst du dieses Verfahren nicht durch einen Schlag durch SQL realisieren? ersetzen Sie hoge wählen Sie id, Daten + 1 als Daten von hoge wo id = x; Wenn es diese SQL war, war ein Ergebnis nicht verwendbar, da Daten im Fall von NULL nicht eingegeben wurden.

Schließlich wird es nicht sein, ob es eine Pluralzahl oder ein Kamm von SQL in einem if-Satz ist? Wenn es eine einfachere Methode gibt, bitte unterrichten Sie es.

Menschen danken Ihnen im Voraus.

+0

Ich habe keine Ahnung, was Sie fragen. Meine beste Vermutung: Möchten Sie prüfen, ob Zeilen mit einer bestimmten ID vorhanden sind, und falls ja, ein Datenfeld inkrementieren, und falls nicht, eine 0-Zeile erstellen? – Eric

+0

Darf ich vorschlagen, dass Sie die Frage in Ihrer Muttersprache verfassen und sie über die Sprachtools von Google weitergeben, um sie in Englisch zu übersetzen? Ich kann wirklich nicht analysieren, was du fragst. Vielleicht kann jemand anderes das auch. –

+0

@Vinko - Äh, diese Frage liest sich so, als ob sie durch Googles Sprachtools gelaufen wäre. Sie sind weit von perfekt. – ceejayoz

Antwort

0

Sie scheinen zu fragen, wie eine Zeile erstellt wird, wenn sie nicht bereits vorhanden ist, oder wenn sie existiert, eines der Felder darin zu aktualisieren.

Der normale Ansatz (für DBMS‘, die nicht in irgendeiner Form UPSERT Aussage liefern) ist:

insert into TBL(keycol,countcol) values (key,-1) 
update TBL set countcol = countcol + 1 where keycol = key 

Sie müssen alle Fehler in der ersten Zeile ignorieren (das bereits, wenn die Zeile passieren soll, existiert). Dann wird die zweite Anweisung es aktualisieren.

Es ist auch ungewöhnlich, zuerst einen Nulleintrag einzufügen, da Sie in der Regel ein "Ding" hinzufügen, wenn Sie es das erste Mal tun. In diesem Fall würde die Einfügung den Wert auf 0 und nicht auf -1 setzen.

3

Wenn ich die Frage richtig verstehe (ich glaube nicht, dass das OP ein englischer Muttersprachler ist), können Sie ON DUPLICATE KEY verwenden, um dies in MySQL zu tun.

INSERT INTO table 
    (column1, column2, ...) 
VALUES 
    ('initial value for column1', 'initial value for column2', ...) 
ON DUPLICATE KEY UPDATE 
    column1 = column1 + 1, column2 = 'new value for column2'; 
Verwandte Themen