【发布时间】:2019-08-09 13:23:10
【问题描述】:
在我的数据库中,这个表中有一个表和6列
----------------------------------
|id|word|translation|forms|translation_form|tags|
|4 |a |b |d,s,h|t,y,p |b,o |
|2 |p |a |d,f,k|t,y,o |v,i |
|0 |n |br |d,f,a|t,y,n |u,i |
|1 |o |br |d,f,b|t,y,a |u,g |
|3 |t |br |d,f,b|t,y,p |a,g |
----------------------------------
搜索词是“a”
我想先在 (word) 中搜索,然后在其他列中搜索
并像这样对它们进行排序 第一个 id 4 比 2 然后 0 然后 1 然后 3
我用过
SELECT * FROM dictionary WHERE
MATCH(`word`) against('a*' in boolean MODE) OR
MATCH(`translation`) against('a*' in boolean MODE) OR
MATCH(`forms`) against('a*' in boolean MODE) OR
MATCH(`translation_forms`) against('a*' in boolean MODE) OR
MATCH(`tags`) against('a*' in boolean MODE)
我得到了结果,但不是按照我描述的顺序 如何对它们进行排序
【问题讨论】:
-
您不应该将 csv 值存储在数据库中 ..
-
但更重要的是 - 在问 SO 之前您尝试了什么?
-
如果你真的需要坚持这个模式,那么你应该考虑Full-Text Search并使用权重进行排序。
-
谢谢,我编辑了我的问题。
标签: php mysql sql database match