mysql - 如何在 MySQL 中连接整个结果集?

标签 mysql sql union

我正在尝试以下查询:

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/

相关文章:

mysql - 一个复杂的 MySQL 查询

mysql - 我试图让已分配某些内容的用户能够使用 PHP 和 MYSQL 查看它

mysql - 使用 UNION 或任何其他解决方案将两个查询合并为一个

javascript - 合并/加入 2 个 jQuery 集

hadoop - Hive - 或条件与左外连接

PHP - 使用 PDO 将字符串数组绑定(bind)到 IN() 子句

mysql - sys.innodb_buffer_stats_by_table...中的pages_hashed是什么?

php - 限制在我的 sql 查询中不起作用

java - Oracle 和 MySQL 中 PostgreSQL 的 XMIN

mysql - 尽管没有通配符,查询仍返回 "LIKE"结果?