SELECT 在 INSERT 的 VALUES 上
SELECT on INSERT's VALUES
我的问题是有没有办法做到这一点:
INSERT INTO t1 (c1, c2, c3, c4, c5)
VALUES (SELECT c1 FROM t2, 15, 2, 'Name', SELECT c5 FROM t4);
我知道我有 INSERT INTO t1 FROM SELECT
,但我不能将它用于这种特殊情况,我想知道是否可以在插入值中添加选择。
是的,这是可能的,但不是你提到的语法:
INSERT INTO t1 (c1, c2, c3, c4, c5)
SELECT t2.c1 , 15, 2, 'Name', t4.c5
FROM t2, t4
WHERE t2.some_field = t4.some_other_field
t2
和 t4
表之间应该有一些逻辑连接或它们自己的 WHERE
条件。
子查询与 parenthesis
一起使用,如:
INSERT INTO t1 (c1, c2, c3, c4, c5)
VALUES ((SELECT c1 FROM t2), 15, 2, 'Name', (SELECT c5 FROM t4));
是的,有办法做到。您需要为每个 SELECT
.
使用 parenthesis
INSERT INTO t1 (c1, c2, c3, c4, c5)
VALUES ((SELECT c1 FROM t2), 15, 2, 'Name', (SELECT c5 FROM t4));
请记住,您的 select 应该 return 只有 1 个值。
这应该适合你。
INSERT INTO `pages` (name, content, modified)
VALUES ('new page', (SELECT `description` FROM `categories` WHERE id = '4'), NOW());
我想你只是忘了将子查询放在括号中。
你应该使用这样的东西:
INSERT INTO t1 (c1, c2, c3, c4, c5)
SELECT
f1.c1, 15, 2, 'Name', f2.c5
FROM
(SELECT c1 FROM t2) AS f1
CROSS JOIN
(SELECT c5 FROM t4) AS f2
我的问题是有没有办法做到这一点:
INSERT INTO t1 (c1, c2, c3, c4, c5)
VALUES (SELECT c1 FROM t2, 15, 2, 'Name', SELECT c5 FROM t4);
我知道我有 INSERT INTO t1 FROM SELECT
,但我不能将它用于这种特殊情况,我想知道是否可以在插入值中添加选择。
是的,这是可能的,但不是你提到的语法:
INSERT INTO t1 (c1, c2, c3, c4, c5)
SELECT t2.c1 , 15, 2, 'Name', t4.c5
FROM t2, t4
WHERE t2.some_field = t4.some_other_field
t2
和 t4
表之间应该有一些逻辑连接或它们自己的 WHERE
条件。
子查询与 parenthesis
一起使用,如:
INSERT INTO t1 (c1, c2, c3, c4, c5)
VALUES ((SELECT c1 FROM t2), 15, 2, 'Name', (SELECT c5 FROM t4));
是的,有办法做到。您需要为每个 SELECT
.
parenthesis
INSERT INTO t1 (c1, c2, c3, c4, c5)
VALUES ((SELECT c1 FROM t2), 15, 2, 'Name', (SELECT c5 FROM t4));
请记住,您的 select 应该 return 只有 1 个值。
这应该适合你。
INSERT INTO `pages` (name, content, modified)
VALUES ('new page', (SELECT `description` FROM `categories` WHERE id = '4'), NOW());
我想你只是忘了将子查询放在括号中。
你应该使用这样的东西:
INSERT INTO t1 (c1, c2, c3, c4, c5)
SELECT
f1.c1, 15, 2, 'Name', f2.c5
FROM
(SELECT c1 FROM t2) AS f1
CROSS JOIN
(SELECT c5 FROM t4) AS f2