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');