如何获取索引并在查询mysql中使用它

如何获取索引并在查询mysql中使用它,mysql,Mysql,我有一张类似的桌子: memberID | clubIDs | clubRegistrationDates ... -------------------------------------------------------------------- 2 3,4,10,2 2010,2011,2015,2014 ... 3 2,1,5,6

我有一张类似的桌子:

   memberID  |    clubIDs     |       clubRegistrationDates     ...
--------------------------------------------------------------------
   2             3,4,10,2             2010,2011,2015,2014       ...
   3             2,1,5,6              2015,2000,2005,2010       ...
   4             3,2                  2014,2014                 ...
一行的含义是,例如:会员22010注册到俱乐部3,在2011注册到俱乐部4,依此类推……
因此,我想要得到的查询是获得自2014年以来成为俱乐部2会员的任何会员,因此此查询应该获得我的会员24。我已经有一个sql,但它没有连接到year参数,该参数是:

SELECT clubID, clubName,
(SELECT count(*) FROM members WHERE FIND_IN_SET('2',clubIDs) AND status='1' AND memberTypeID='2') AS activeNumber,
(SELECT count(*) FROM members WHERE FIND_IN_SET('2',clubIDs) AND status='0' AND memberTypeID='2') AS inactiveNumber
FROM clubs;

所以我需要从clubbids列中获取俱乐部2的索引,并将其用于clubRegistrationDates列。感谢您的帮助。

请勿在一列中存储多个值。这只会给你带来像现在这样的问题。更好的桌子设计是

members table
-------------
id
name
...


clubs table
-----------
id
name
...


club_members table
------------------
club_id
member_id
registration_year
这被称为m对n关系。然后,要获得俱乐部自2014年以来id=2的所有会员,您可以

select m.id, m.name
from members m
join club_members cm on cm.member_id = m.id
where cm.club_id = 2
and cm.registration_year = 2014
如果您只有俱乐部的
名称
,而没有
id
,则使用

select m.id, m.name
from members m
join club_members cm on cm.member_id = m.id
join clubs c on cm.club_id = c.id
where c.name = 'Cool Club'
and cm.registration_year = 2014

我认为您应该只传递
2
(作为整数)而不是
“2”
(作为字符串),并且可以将
>0
放在
FIND\u IN\u SET
之后。实际上,您应该真正地、真正地更改数据库设计。永远不要在一列中存储多个值。我同意@juergend,但如果系统已经构建,并且没有足够的时间进行此类重大更改,则有时是不可能更改的。一旦我经历过这样一次:(juergen d,一个人可以是20个俱乐部的成员,也可以是1个俱乐部的成员,但是没有办法知道,因此,设置20个栏也不好,而且这更具动态性。对于1个俱乐部成员,其他19个栏将为空…maksbd19,谢谢你的评论。是的,这种设计更好。我想要的查询也更容易。谢谢。