具有多个加载的Mysql计算不起作用

时间:2012-12-07 11:23:12

标签: mysql sql-order-by

我对来自两个不同表格的两列进行了查询(在我的查询中通过左连接进行连接),并且我希望通过我正在寻找的术语的出现来对搜索结果进行排序。我在声明中提出了这个作为我的排序变量,这可能不是很优雅,但工作正常:

((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

我需要这个计算,因为搜索结果来自两个不同的表,但是应该在一个页面上一起排序(假设:一个表是关于具有某些关键字的图像,第二个表是关于具有某些关键字的视频,一次我搜索了一个特定的关键字,我不关心它是图像还是视频,我想要最适合我的关键字查询的那个。)

你知道为什么计算不起作用吗?我的错是什么?我试过添加/删除括号,但这没有帮助。

任何帮助将不胜感激,

1 个答案:

答案 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