sql在mysql中的数组迭代

bnl4lu3b  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(331)

有没有一种方法可以将一个数组传递到mysql查询中,并将结果作为另一个数组返回?(除了使用游标之外,这对于我的用例来说是一种过度的杀伤力)
对于单个id,我的查询如下所示。

SET @userId = '04b452cd59dcc656'
Select user_account_number from userstore where u_id = @userId ;

我不是一次发送每个id,而是尝试发送一个列表并返回一个列表

SET @userId = ('04b452cd59dcc656','eqwe52cddasfsd656');
<query returning the list of account numbers>

而且-我认为这比一次只发送一个id更有效。思想?

velaa5lx

velaa5lx1#

你可以用 IN :

select user_account_number
from userstore
where u_id in ('04b452cd59dcc656', 'eqwe52cddasfsd656') ;

使用变量更为棘手。如果您知道最大值,您可以:

select user_account_number
from userstore
where u_id in (@id1, @id2);

不满意,但它做的工作。同样令人不满意的是 FIND_IN_SET() :

set @ids = '04b452cd59dcc656,eqwe52cddasfsd656';

select user_account_number
from userstore
where find_in_set(u_id, @ids) > 0;

唉,这不会使用索引。
最后是动态sql:

set @sql = concat('select user_account_number from userstore where u_id in (''',
                  replace(ids, ',', ''','''),
                  ''')'
                 );

prepare s from @sql;
execute s;

相关问题