php - 一个查询中两个表的 ORDER BY 结果

标签 php mysql

我在我的网站上提供实时搜索功能

$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");

我正在尝试从两个表中获取结果,因为我可以看到它工作正常,但是在两个表中,keywordspopular_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");

查询的作用:

  1. 根据$search从关键字中搜索字词和金额
  2. 基于$search从popular_search搜索字词和金额
  3. 将上述查询和别名合并为选项卡
  4. 按 my_field 对选项卡进行分组
  5. 按 SUM(金额)DESC 排序
  6. 限制 10 条以返回前 10 条记录

希望这有帮助。

关于php - 一个查询中两个表的 ORDER BY 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20768221/

相关文章:

python - 在 Python 中,如何转义将用作 SQL 语句的字符串中的单引号?

php - 是否使用一对一 MySQL 关系?

php - 服务未创建异常: ZF2

php - 将请求转换为自定义验证请求

php - 为什么 sprintf 在这里返回 false?

mysql - SQL SP : How to return one inactive record along with active records

PHP 提交表单,在使用 JQuery 时突出显示文本字段错误

php - 我无法在 php 代码中捕获异常

php - 存储值供以后在没有数据库的情况下使用

mysql - SQL从不同数据库的多个表插入数据