我的MySQL表中有一个名为category_list
的SET数据类型列,可以包含以下一个或多个值:Category 1
,Category 2
。
第一个问题:
要返回已选择两个类别的行,我使用:
"WHERE FIND_IN_SET('Category 1', category_list) > 0 AND FIND_IN_SET('Category 2', category_list) > 0"
这很好用。但是当我有很多类别时,这个陈述变得很大。是否有更简单/更好的方法来选择已选择所有类别的行?
第二个问题:
要返回已选择NONE类别的行,我使用此查询:
"WHERE FIND_IN_SET('XYZ', category_list) = 0"
我确保XYZ
不是SET中的可能值。
这也可以,但是如果我稍后将值XYZ
添加到SET,那么所有这些查询显然都会中断。
是否有更简单/更好的方法来只选择set列没有值的行?