题
有人可以给我一个查询,将返回结果行ID 1&3?
ID Name Hidden
1 Mika 1,4,2
2 Loca 0
3 Nosta 4
4 Like 2
像这样 SELECT * FROM表WHERE隐藏HAVING(4)
解决方案
SELECT * FROM table WHERE FIND_IN_SET('4',Hidden);
文档为 FIND_IN_SET 一>
其他提示
SELECT * FROM table WHERE CONCAT(',',Hidden,',') LIKE '%,4,%'
,也可以避免使用LIKE这样
SELECT * FROM table WHERE INSTR(CONCAT(',',Hidden,','), ',4,') > 0
这不会得到像40,14,等等,但你必须确保有在隐藏字段没有空格(如1, 4, 5
或更新相应的CONCAT和LIKE功能。
SELECT * FROM table WHERE Hidden LIKE '%4%'
的%是通配符。
全文搜索可能是一个合理的该解决方案,只要你使用正确的断字。
要么与全文检索去,所建议的,或
旋隐藏价值关闭到一个单独的表中,与当前行的ID。
例如,米卡将具有三个条目在该表
ID = 1,隐藏= 1 点击 ID = 1,隐藏= 4 点击 ID = 1,隐藏= 2
然后,你可以返回结果反对这种分拆表。
您也可能要考虑归一化表和存储在一个单独的表中的这些“隐藏”值时,在apropriate列的索引。根据你的行数,这将是更快:
ID Hidden
1 1
1 4
1 2
3 4
4 2
和
SELECT DISTINCT table.* FROM table, hidden_table WHERE table.ID = hidden_table.ID AND hidden_table.hidden = 4
不隶属于 StackOverflow