SELECT 个语句作为 INSERT 参数以及其他参数
SELECT statements as INSERT parameters along with other parameters
两个SELECT语句return各只有一个标量数据。我希望将它们作为 INSERT 语句的前两个参数传递。但是它在第二个 SELECT 语句之后抛出一个错误,指出无效的逗号。我在这里做错了什么?
INSERT INTO messages(src_id, tar_id, body, time)
SELECT id FROM chatters WHERE (uname = 'adnan'),
SELECT id FROM chatters WHERE (uname = 'john'), 'Hello John', '1971-12-16';
把整个SELECT
放在括号里:
INSERT INTO messages(src_id, tar_id, body, time)
VALUES
( ( SELECT id FROM chatters WHERE (uname = 'adnan') ),
( SELECT id FROM chatters WHERE (uname = 'john') ),
'Hello John',
'1971-12-16' );
您可以按如下方式使用insert into .. select
:
INSERT INTO messages(src_id, tar_id, body, time)
SELECT max(case when uname = 'adnan' then id end),
max(case when uname = 'john' then id end),
'Hello John',
'1971-12-16'
FROM chatters
where uname in ('adnan','john');
两个SELECT语句return各只有一个标量数据。我希望将它们作为 INSERT 语句的前两个参数传递。但是它在第二个 SELECT 语句之后抛出一个错误,指出无效的逗号。我在这里做错了什么?
INSERT INTO messages(src_id, tar_id, body, time)
SELECT id FROM chatters WHERE (uname = 'adnan'),
SELECT id FROM chatters WHERE (uname = 'john'), 'Hello John', '1971-12-16';
把整个SELECT
放在括号里:
INSERT INTO messages(src_id, tar_id, body, time)
VALUES
( ( SELECT id FROM chatters WHERE (uname = 'adnan') ),
( SELECT id FROM chatters WHERE (uname = 'john') ),
'Hello John',
'1971-12-16' );
您可以按如下方式使用insert into .. select
:
INSERT INTO messages(src_id, tar_id, body, time)
SELECT max(case when uname = 'adnan' then id end),
max(case when uname = 'john' then id end),
'Hello John',
'1971-12-16'
FROM chatters
where uname in ('adnan','john');