mysql-find number在逗号分隔的数字字符串中

6ljaweal  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(320)

我有一个用户数据表。一个用户可以“屏蔽”另一个用户,拒绝他们访问他们的任何帖子(比如“社交媒体网站”)。
如果 blockeduserids '是逗号分隔列表的名称,其中包含的ID是整数,如何选择不阻止查看用户的用户?
我正在努力实现的非工作示例:

SELECT * FROM users WHERE [the blocked user's ID] NOT IN blockeduserids;
ftf50wuq

ftf50wuq1#

你可以用 FIND_IN_SET 在这里:

SELECT *
FROM users
WHERE FIND_IN_SET('blockedid', blockeduserids) = 0;

但是,一般来说,在数据库表中保留逗号分隔的字符串是不可取的。更好的设计是将每个被阻止的用户id放在一个单独的表中。如果你有这样一个单独的表格,你可以写:

SELECT *
FROM users u
WHERE NOT EXISTS (SELECT 1 FROM blockeduserstable b WHERE u.user_id = b.user_id);

这可能会大大超过您当前的方法。

相关问题