我对来自两个不同表格的两列进行了查询(在我的查询中通过左连接进行连接),并且我希望通过我正在寻找的术语的出现来对搜索结果进行排序。我在声明中提出了这个作为我的排序变量,这可能不是很优雅,但工作正常:
((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
我需要这个计算,因为搜索结果来自两个不同的表,但是应该在一个页面上一起排序(假设:一个表是关于具有某些关键字的图像,第二个表是关于具有某些关键字的视频,一次我搜索了一个特定的关键字,我不关心它是图像还是视频,我想要最适合我的关键字查询的那个。)
你知道为什么计算不起作用吗?我的错是什么?我试过添加/删除括号,但这没有帮助。
任何帮助将不胜感激,
答案 0 :(得分:0)
在搜索事件之前,您是否尝试过使用UNION组合这两个表?我的建议是使用以下内容:
SELECT((LENGTH(newcolumn)-LENGTH(REPLACE(lower(newcolumn),lower('$term'),'')))/LENGTH('$term') AS sort_frequency FROM table1.column UNION table2.column AS newcolumn