SQL sorgusu ile | input name SQL bulduysanız sonra başka € DOA yok

4 Cevap php

Im bir isim "jack" demek için sütun 'Rname' tablo 'kişilerin' kontrol ve eğer varsa o başka o sıra yeni Rname ile yeni bir satır INSERT GÜNCELLEMEYİ bir SQL sorgusu yazmaya çalışıyorum.

I’v been trying out IF/ELSE statements but haven’t really seen how they work. Or is there a better way to do what I want without If/ELSE? (I haven’t done much of this SQL work, I used to only do UPDATE, INSERT, DELETE, ALTER… that kinda of stuff.

Ben şimdiye kadar bu var: (jack Rname satırda bulunursa eğer yeni satır INSERT başka, güncellemek)

SELECT * FROM persons IF 'jack' == rName BEGIN [UPDATE Statement] END ELSE BEGIN [ INSERT Statement] END

Edit: I don’t think I quite explained what I wanted, rName should all be unique names, no 2 should be the same. I’v tried ON DUPLICATE KEY UPDATE, but it seems to just inserts a new row with the new data. But I want it to update the already existing rName (jack) row with the new data, the rName (jack) should stay the same but other fields in that row should be updated to the new data provided.

4 Cevap

Senin durumunda:

INSERT INTO persons(`rName`, `foo`) VALUES('jack', 'bar') ON DUPLICATE KEY UPDATE `foo` = VALUES(`bar`);

rName Bu iş için eşsiz bir anahtara sahip olmalıdır. Tablosunda bir 'jack' varsa, o zaman foo 'bar' alanını günceller ve hayır 'jack' varsa, o rName = ile yeni bir satır ekler 'jack' ve foo = 'bar'.

Ben mysql kullanarak görüyorum. Sen mysql en insert ... on duplicate key update sözdizimi istiyorum. Documentation

Eğer yinelenen KEY GÜNCELLEME yaşıyorsanız sorun tablo tanımı gereği, size çiftleri izin böylece sizin Adı sütun benzersiz bir kısıtlaması yok olmasıdır.

Ayrıca bakınız: http://dev.mysql.com/doc/refman/5.0/en/replace.html

Sen yapabilirsin

REPLACE INTO persons(`rName`, `foo`) VALUES('jack', 'bar')

Çakışan bir satır zaten varsa da, teknik olarak, bunun yerine güncellenmiş daha silinir ve değiştirilir. Ama bu yine de ne istediğini olabilir.