mysql - 如何在一个动态选择查询中编写多个查询

标签 mysql plsql rdbms

我在表中有多个记录:

  UserTable:
          UID         AGE          Contact

          22           61          8899778899
          14           45          8877556644
          16           75          7894561246

我想编写一个程序,它将接受 UID 列表并返回相应的联系号码。

    Input         output
 <22,14,16>        <(22,8899778899),(14,8877556644),(16,7894561246)>

我尝试过以下过程,

     drop procedure if exists testWC;
     CREATE  PROCEDURE testWC(Array_String VARCHAR(100))
         BEGIN
            SELECT UID,Contact FROM UserTable
            WHERE UID IN (Array_String);

         END

  call testWC('22,14,16');

   Result:
         UID           Contact

         22            8899778899

但它只占用列表中的 22 个元素,即字符串列表中的第一个元素。请帮助我提供宝贵的建议。

最佳答案

我不知道为什么它不起作用。我在类似的情况下使用了准备好的语句,并且它在这种情况下有效。

 CREATE  PROCEDURE testWC(Array_String VARCHAR(100))
     BEGIN
        SET @stmt = CONCAT('SELECT UID, Contact FROM UserTable WHERE UID IN (', Array_String, ')');

        PREPARE q FROM @stmt;
        EXECUTE q;
        DEALLOCATE PREPARE q;


     END //

我会让您根据需要设置结果的格式。

关于mysql - 如何在一个动态选择查询中编写多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34511691/

相关文章:

php - 对表的sql条件查询

dataframe - 在 Dataframe 上查看 "iterating"的进度

sql - 将字符串转换为日期并在给定字符串无效时引发异常

delphi - 自由格式报告工具

mysql - 如何高效地从多个表中选择一致的数据

PHP:将日期转换为日期时间并将其插入到 mysql 数据库中?

php - 使用cmd保存带有DATE的mySQL文件

MySQL 错误 502 : "SELECT * FROM table WHERE uid=1 ORDER BY id DESC LIMIT 0, 100"; Pagination not working

sql - Oracle-插入具有自动增量ID的新行

sql - 在 SQLite3 中,这个 select 语句会受益于两个索引吗?