有人可以给我一个查询,将返回结果行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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top