我的网站上有一个关键字搜索功能,允许访问者搜索特定内容。我的 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/