gpt4 book ai didi

mysql - MYSQL 中的数组迭代

转载 作者:行者123 更新时间:2023-11-29 16:42:01 26 4
gpt4 key购买 nike

有没有办法将数组传递到 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 更有效。想法?

最佳答案

您可以使用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;

关于mysql - MYSQL 中的数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53309928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com