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

时间:2015-04-05 10:20:47

标签: mysql

我有一张类似的表:

   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                 ...

一行的含义是,例如:成员 2 2010 中注册到 3 俱乐部,注册到俱乐部 4 2011 等等...... 因此,我想要获得的查询是任何成员 2 2014 ,所以此查询应该让我成员 2 4 。我已经有一个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;

所以我需要从 clubIDs 专栏获取俱乐部2的索引,并将其用于 clubRegistrationDates 专栏。感谢任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:2)

永远不要在一列中存储多个值。这只会让你遇到像你这样的问题。更好的桌面设计将是

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


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


club_members table
------------------
club_id
member_id
registration_year

它被称为 m到n关系。然后从id=2 2014获得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 俱乐部的所有成员

name

如果您只有俱乐部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 ,那么请使用

{{1}}