Potrebujem duplicitné záznamy prostredníctvom PDO. Môžeš mi pomôcť?
odpovede:
0 pre odpoveď č. 1použitie INSERT ... SELECT
Napríklad;
INSERT INTO `foo` (`name`)
(SELECT `name`
FROM `foo`
WHERE `id` = 1)
Stručne povedané, budete musieť zadať názvy polí (don "t pridať primárne kľúče do zoznamu polí na INSERT
alebo SELECT
).
Ilustrovaný príklad
CREATE TABLE `dupe` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
INSERT INTO `dupe` (id, name) VALUES(1, "bar");
Takže teraz máme stôl s primárnym kľúčom, takže nemôžeme "ľahko" duplikovať riadky.
INSERT INTO `dupe`
SELECT * FROM `dupe` WHERE `name` = "bar"
[Err] 1062 - Duplicate entry "1" for key "PRIMARY"
Ach, dobre. Zadajte polia, ktoré chceme duplikovať hodnoty.
Chceme duplikovať prvý riadok, spustili by sme;
INSERT INTO `dupe` (`name`)
SELECT `name` FROM `dupe` WHERE `name` = "bar";
Teraz sme duplikovali riadok, ale nie primárny kľúč.
mysql> select * from dupe;
+----+------+
| id | name |
+----+------+
| 1 | bar |
| 2 | bar |
+----+------+
2 rows in set