2 Temmuz 2010, Cuma
MySQL: kayıt Ekle değilse tablo var
Aşağıdaki sorguyu yürütmek için çalışıyorum:
INSERT INTO table_listnames (name, address, tele)
VALUES ('Rupert', 'Somewhere', '022')
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name='value'
);
Ama bu bir hata döndürür. Temelde 'adı' kayıt alanı zaten varsa yeni adı benzersiz olup olmadığını kontrol etmek için nasıl bir kayıt var mı? Eğer bir kayıt eklemek istemiyorum
CEVAP
2 Temmuz 2010, Cuma
Değilim aslında düşündüren bunu bu kadar UNIQUE
dizin olarak önerilen tarafından Piskvor ve diğer bir çok daha az var, ama tam olarak ne olduğunu denemeden:
CREATE TABLE `table_listnames` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`address` varchar(255) NOT NULL,
`tele` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Ekle kayıt:
INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM `table_listnames`;
---- -------- ----------- ------
| id | name | address | tele |
---- -------- ----------- ------
| 1 | Rupert | Somewhere | 022 |
---- -------- ----------- ------
Aynı kaydı tekrar eklemek için:
INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
---- -------- ----------- ------
| id | name | address | tele |
---- -------- ----------- ------
| 1 | Rupert | Somewhere | 022 |
---- -------- ----------- ------
Farklı bir kayıt eklemek için:
INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'John', 'Doe', '022') AS tmp
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name = 'John'
) LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM `table_listnames`;
---- -------- ----------- ------
| id | name | address | tele |
---- -------- ----------- ------
| 1 | Rupert | Somewhere | 022 |
| 2 | John | Doe | 022 |
---- -------- ----------- ------
.
Bunu Paylaş:
MySQL ile nasıl bir sütun tablo içinde...
sütun eğer varsa değil mysql tablo Ekl...
Eğer güncelleme var yoksa MySql Tablo ...
İkinci tablo fazladan bir sütun olması...
KİMLİĞİ mysql bir tablo, bazan isteğe ...