MySQL-在以逗号分隔的数字字符串中查找数字

时间:2018-08-18 17:07:28

标签: mysql sql query-string

我有一张用户数据表。用户可以“阻止”其他用户,从而拒绝他们访问其任何帖子(例如“社交媒体网站”)。

如果“ blockeduserids”是逗号分隔列表的名称,并且其中包含的ID是整数,那么我该如何选择不阻止查看用户的用户?

我要实现的非工作示例:

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

1 个答案:

答案 0 :(得分:5)

您可以在此处使用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);

这可能会大大优于您当前的方法。