Bir INSERT sorgusu içerisinde kullanılacak VALUE değerlerinin başka bir tablodan nasıl çekileceğini gösteren örnek bir sorgu
Birinci Tablo
CREATE TABLE t1 (
a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b VARCHAR(10)) TYPE=InnoDB;
Böyle bi tablo içerisine aşağıdaki gibi bir SQL sorgu ile veri ekleyebiliriz.
INSERT INTO t1 (b) VALUES (‘Spike’), (‘Chip’), (‘John’);
İkinci Tablo
CREATE TABLE t2 (
a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b INT NOT NULL,
FOREIGN KEY (b) REFERENCES t1 (a),
c VARCHAR(15)) TYPE=InnoDB;
t2 tablosuna ait VALUE değerleri t1 tablosundaki değerlerden çekilerek alınıyor. Bu durumun faydaları arasında addslashes ve stripslashes gibi komutları kullanmadan direk SQL tabloları arasında bir transfer yapmamız sayılabilir.
INSERT INTO t2 (b, c)
VALUES ((SELECT a FROM t1 WHERE b=’Chip’), ‘shoulder’),
((SELECT a FROM t1 WHERE b=’Chip’), ‘old block’),
((SELECT a FROM t1 WHERE b=’John’), ‘toilet’),
((SELECT a FROM t1 WHERE b=’John’), ‘long,silver’),
((SELECT a FROM t1 WHERE b=’John’), ‘li”l’);
Şöyle bir kullanımda mevcuttur.
INSERT INTO TargetTable (col1, col2, col3)
SELECT col1,col2, ‘ExplicitValue’
FROM SourceTable