1

我对来自两个不同表的两列进行查询(通过我的查询中的左连接连接),我想按我要查找的术语的出现对搜索结果进行排序。我想出了这个作为语句中的排序变量,这可能不优雅,但工作正常:

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

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

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

任何帮助,将不胜感激,

4

1 回答 1

0

在搜索出现之前,您是否尝试过使用 UNION 来组合这两个表?我的建议是使用以下内容:

SELECT((LENGTH(newcolumn)-LENGTH(REPLACE(lower(newcolumn),lower('$term'),'')))/LENGTH('$term') AS sort_frequency FROM table1.column UNION table2.column AS newcolumn
于 2012-12-07T11:42:03.863 回答