php - 如何按降序显示来自多个表的数据库结果

标签 php mysql sql-order-by

我的网站上有一个关键字搜索功能,允许访问者搜索特定内容。我的 msysql 数据库有 15 个表,对于搜索功能,我使用 UNION ALL 将它们全部连接起来,以便访问者可以同时搜索所有表。问题是所有结果都是按升序排列的。如何按降序获取结果。

SELECT *  
FROM table1  
WHERE keyword LIKE %s OR id  LIKE %s  

UNION ALL 

SELECT *  
FROM table2  
WHERE keyword LIKE %s OR id  LIKE %s  

UNION ALL 

SELECT *  
FROM table3   
WHERE keyword LIKE %s OR id  LIKE %s 

最佳答案

在这种情况下,我建议您规范化数据库并将所有关键字放在同一个表中如果您根据关键字的类型来分隔关键字,请使用列类型来指明它

以下查询将执行您的要求。

SELECT * 
FROM   ((SELECT * 
         FROM   table1 
         WHERE  keyword LIKE '%s' 
                 OR id LIKE '%s') 
        UNION ALL 
        (SELECT * 
         FROM   table2 
         WHERE  keyword LIKE '%s' 
                 OR id LIKE '%s') 
        UNION ALL 
        (SELECT * 
         FROM   table3 
         WHERE  keyword LIKE '%s' 
                 OR id LIKE '%s')) AS bigtable 
ORDER  BY `id`; 

关于php - 如何按降序显示来自多个表的数据库结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449183/

相关文章:

MySQL 字符串位置和子串排序

PHP 初学者 : How to "Order by" that query?

python - sqlite3 排序需要时间

php - 针对数据库问题的查询效率

php - 在MySQL中存储时如何渲染变量中的空白和段落?

javascript - 显示用户提交的图像

php - Symfony 2 - 从控制台命令调用 Controller 方法

php - Propel (PHP ORM),基本用法对所有(非空)表和列返回 NULL

mysql - 在最高分上添加特定分数

php - 如何在 Symfony 2 中设置表单字段名称?