MySQL - 在逗号分隔的数字字符串中查找数字
MySQL - Find number in string of comma-separated numbers
我有 table 的用户数据。一个用户可以 'block' 另一个用户,拒绝他们访问他们的任何帖子(想想 "a social media site")。
如果'blockeduserids
'是逗号分隔列表的名称,并且其中包含的ID是整数,我如何select不阻止查看用户的用户?
我正在努力实现的非工作示例:
SELECT * FROM users WHERE [the blocked user's ID] NOT IN blockeduserids;
您可以在此处使用 FIND_IN_SET
:
SELECT *
FROM users
WHERE FIND_IN_SET('blockedid', blockeduserids) = 0;
但是,一般来说,在数据库 table 中保留逗号分隔的字符串是不可取的。更好的设计是将每个被阻止的用户 ID 放在单独的 table 中。如果你有这样一个单独的table,你可以这样写:
SELECT *
FROM users u
WHERE NOT EXISTS (SELECT 1 FROM blockeduserstable b WHERE u.user_id = b.user_id);
这可能会大大优于您当前的方法。
我有 table 的用户数据。一个用户可以 'block' 另一个用户,拒绝他们访问他们的任何帖子(想想 "a social media site")。
如果'blockeduserids
'是逗号分隔列表的名称,并且其中包含的ID是整数,我如何select不阻止查看用户的用户?
我正在努力实现的非工作示例:
SELECT * FROM users WHERE [the blocked user's ID] NOT IN blockeduserids;
您可以在此处使用 FIND_IN_SET
:
SELECT *
FROM users
WHERE FIND_IN_SET('blockedid', blockeduserids) = 0;
但是,一般来说,在数据库 table 中保留逗号分隔的字符串是不可取的。更好的设计是将每个被阻止的用户 ID 放在单独的 table 中。如果你有这样一个单独的table,你可以这样写:
SELECT *
FROM users u
WHERE NOT EXISTS (SELECT 1 FROM blockeduserstable b WHERE u.user_id = b.user_id);
这可能会大大优于您当前的方法。