我对来自两个不同表的两列进行查询(通过我的查询中的左连接连接),我想按我要查找的术语的出现对搜索结果进行排序。我想出了这个作为语句中的排序变量,这可能不优雅,但工作正常:
((LENGTH(table1.column)-LENGTH(REPLACE(lower(table1.column),lower('$term'),'')))/LENGTH('$term') AS sort_frequency
$term 是我的搜索词,在查询结束时我这样做:ORDER BY sort_frequency DESC
.
现在出现了困难:两个表分别计算工作正常,但是当我想通过加法连接两个表时,table2 的结果总是排在 table1 的结果之前,并且没有按发生顺序排列。我的陈述如下所示:
(((LENGTH(table1.column)-LENGTH(REPLACE(lower(table1.column),lower('$term'),'')))/LENGTH('$term')) + ((LENGTH(table2.column)-LENGTH(REPLACE(lower(table2.column),lower('$term'),'')))/LENGTH('$term'))) AS sort_frequency
我需要这个计算,因为搜索结果来自两个不同的表,但应该在一个页面上一起排序(假设:一个表是关于具有某些关键字的图像,第二个表是关于具有某些关键字的视频,一旦我搜索一个特定的关键字我不在乎它是图像还是视频,我想要一个最适合我的关键字查询的关键字)。
你知道为什么计算不起作用吗?我的错误是什么?我试过添加/删除括号,但这没有帮助。
任何帮助,将不胜感激,