我在我的网站上提供实时搜索功能
$result =
mysql_query("SELECT word as my_field FROM keywords
WHERE word LIKE ('" . $search . "%')
UNION
SELECT term as my_field FROM popular_search
WHERE term LIKE ('" . $search . "%') GROUP by my_field LIMIT 10");
我正在尝试从两个表中获取结果,因为我可以看到它工作正常,但是在两个表中,keywords和popular_search,我都有字段 amount 所以我需要按金额对上面的查询进行排序,这样我就可以获得相关且受欢迎的结果。我正在尝试使用 ORDER by amount DESC ,但这不起作用......
最佳答案
尝试这个查询:
$result =
mysql_query("SELECT my_field, SUM(amount) sum_amount
FROM (
SELECT word as my_field, amount
FROM keywords
WHERE word LIKE ('{$search}%')
UNION
SELECT term as my_field, amount
FROM popular_search
WHERE term LIKE ('{$search}%')
) tab
GROUP BY my_field
ORDER BY SUM(amount) DESC
LIMIT 10");
查询的作用:
- 根据$search从关键字中搜索字词和金额
- 基于$search从popular_search搜索字词和金额
- 将上述查询和别名合并为选项卡
- 按 my_field 对选项卡进行分组
- 按 SUM(金额)DESC 排序
- 限制 10 条以返回前 10 条记录
希望这有帮助。
关于php - 一个查询中两个表的 ORDER BY 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20768221/