有人可以给我一个查询,该查询将返回行ID 1& 3?
ID Name Hidden
1 Mika 1,4,2
2 Loca 0
3 Nosta 4
4 Like 2
像这样的东西 SELECT * FROM表WHERE Hidden HAVING(4)
答案 0 :(得分:7)
SELECT * FROM table WHERE FIND_IN_SET('4',Hidden);
的文档
答案 1 :(得分:1)
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函数。
答案 2 :(得分:0)
SELECT * FROM table WHERE Hidden LIKE '%4%'
%是通配符。
答案 3 :(得分:0)
Full Text Search可能是合理的解决方案。
答案 4 :(得分:0)
按照建议使用全文搜索,或
将隐藏值旋转到一个单独的表中,其中包含当前行的ID。
例如,Mika在此表中将有三个条目
ID = 1,隐藏= 1
ID = 1,隐藏= 4
ID = 1,隐藏= 2
然后你可以针对这个离职表返回结果。
答案 5 :(得分:0)
您可能还需要考虑规范化表并将这些“隐藏”值存储在具有适当列的索引的单独表中。根据您拥有的行数要快得多:
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