Я пытаюсь выбрать элементы из той же таблицы, повторно организовать данные, а затем вставить данные в ту же таблицу, что и новые записи (в основном я беру " A "для DNS и преобразования их в записи" PTR ").MySQL: INSERT INTO SELECT FROM с некоторыми уникальными значениями
Проблема заключается в том, что я не хочу создавать записи, если существуют три столбца - так что в принципе, если все три столбца существуют (и все они должны существовать, потому что, если только один не соответствует, то он должен быть вставлен в базу данных), то я хочу, чтобы MySQL не вставлял его.
Вот таблица:
mysql> describe records;
+-------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| domain_id | int(11) | YES | MUL | NULL | |
| name | varchar(255) | YES | MUL | NULL | |
| type | varchar(10) | YES | | NULL | |
| content | varchar(64000) | YES | | NULL | |
| ttl | int(11) | YES | | NULL | |
| prio | int(11) | YES | | NULL | |
| change_date | int(11) | YES | | NULL | |
+-------------+----------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
Следующая SQL я смог работать, и он работает, только без проверки трех других месторождений, «уникальный»:
INSERT INTO records (domain_id,name,type,content,ttl,prio,change_date) SELECT domain_id AS domain_id, substring_index(content, '.', -1) AS name, 'PTR' AS type, concat(`name`, '.') AS content, ttl AS ttl, prio AS prio, unix_timestamp() AS change_date from records where type='A'
В основном единственное, что здесь отсутствует, это то, что если domain_id, name и content ALL существуют в другой строке (на основе текущей вставки), я хочу, чтобы она пропускала эту единственную вставку и переходила к следующей вставке, потому что я не хочу того же записей в базе данных.
К сожалению, это также не работает. – drewrockshard