代码之家  ›  专栏  ›  技术社区  ›  RIYAJ KHAN

mysql过程:结果由多行和select语句组成

  •  1
  • RIYAJ KHAN  · 技术社区  · 6 年前

    其中,有一个步骤可以将一个表中的多行插入到临时表中。

    CREATE TABLE `tmpUserList` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `user_type` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
          `first_name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
          `last_name` varchar(45) COLLATE utf8_unicode_ci NOT NULL
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
        ..... some more queries.
    
    
            INSERT INTO  tmpUserList ( 
                    SELECT  id, user_type,first_name,last_name,  from user  where  id in  (usersId) 
            );
    
    
        SELECT * FROM tmpUserList; // return the result
    

    但它给了我一个错误: 结果由多行组成

    1 回复  |  直到 6 年前
        1
  •  1
  •   Lukasz Szozda    6 年前

    对的 INSERT SELECT 语法:

    INSERT INTO tmpUserList(id, user_type,first_name,last_name)
    SELECT id, user_type,first_name,last_name 
    FROM user  
    WHERE id IN (usersId);
    

    usersId 包含多个可以使用的值:

    WHERE FIND_IN_SET(id, usersId);  -- table scan
    

    MySQL Prepared statements with a variable size variable list