gpt4 book ai didi

mysql - 如何在mysql IN()函数中使用String?

转载 作者:行者123 更新时间:2023-11-29 21:10:11 25 4
gpt4 key购买 nike

我的数据库表中有一个名为“ user_id”的VARCHAR(255)字段,在其中存储了逗号分隔的用户ID,例如234,235。

我的查询中有一个内部查询,如下所示,其中“ s”是我的表别名:

(SELECT group_concat(concat(first_name,' ',last_name)) from users where user_id IN (s.user_id)) as user_name


现在,我得到的s.user_id值为:'234,235'
因此,结果我只得到第一个用户的名字。我希望两个用户的名称逗号分开。 (我想要=>('234','235')或(234,235)以使其在IN()函数中起作用)

由于我的查询时间过长,因此无法使用FIND_IN_SET()函数。

最佳答案

将ID存储在需要引用的逗号分隔的字符串中是不好的设计。最好规范化数据并以数据库本地支持的方式存储数据。

也就是说,您需要在字符串中查找用户ID,因此一种解决方案是使用正则表达式。这很慢,我认为值得在单独的表/列中重新组织ID。

SELECT group_concat(concat(first_name,' ',last_name)) 
FROM users
WHERE s.user_id REGEXP CONCAT('(^|,)', user_id, '($|,)')


这会将您的ID与字符串的两边,字符串的开头或结尾处的逗号匹配。

关于mysql - 如何在mysql IN()函数中使用String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36452286/

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