我的网站上有一个网上论坛功能,该功能允许1个用户将他或她任何朋友的用户ID放入被邀请的用户列。我需要执行SQL搜索以确定登录用户的ID是否已由他或她的朋友存储在任何邀请用户列中。
如何使用sql搜索做到这一点?

例:我的专栏是受邀请的用户,并且在该专栏中存储了以下内容(234,394,479)
用户ID 234登录后,我需要搜索以查看是否有任何列的用户ID 234存储在被邀请的用户列内。

SELECT userid, name... FROM mytable WHERE invitedusers = ?


*我与FIND_IN_SET一起查看了SQL IN运算符,但都没有帮助。*

最佳答案

假设您确实使用234,394,479作为一列的值(至少应使用,234,394,479,以便能够在查询中执行WHERE invited LIKE '%,234,%'),应重建用户表,删除字段invited_users并创建像这样的表:

CREATE TABLE invited_users (
  id INT AUTO_INCREMENT,
  owner_id INT, -- Who's input it is
  target_id INT, -- What's the target user
  PRIMARY KEY ( id),
  UNIQUE ( owner_id, target_id),
  -- Indexes (FOREIGN KEYs!) to users table
);


并且不仅仅是选择邀请用户234查询的用户列表:

SELECT users.id, users.name
FROM invited_users
INNER JOIN users ON invited_users.owner_id = users.id
GROUP BY users.id
WHERE invited_users.target_id = 234

关于mysql - SQL阵列搜寻,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9200966/

10-11 02:48