我正在尝试以下查询:
SELECT A,B,C FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C FROM table WHERE field LIKE '%query%'
GROUP BY B ORDER BY B ASC LIMIT 5
这三个查询粘在一起,有点像。但是,返回的结果集在查询 #1 的结果之前反射(reflect)了查询 #3 的结果,这是不受欢迎的。
有没有办法对这些进行优先级排序,以便查询#1 的结果全部出现,然后查询#2 的结果全部出现,然后查询#3 的结果全部出现?我还不想在 PHP 中执行此操作(更不用说必须控制在第一个查询中显示的结果在第二个查询中不显示等等)。
最佳答案
也许你应该尝试包括第四列,说明它来自哪个表,然后按它排序和分组:
SELECT A,B,C, "query 1" as origin FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C, "query 2" as origin FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C, "query 3" as origin FROM table WHERE field LIKE '%query%'
GROUP BY origin, B ORDER BY origin, B ASC LIMIT 5
关于mysql - 如何在 MySQL 中连接整个结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839/