mysql - 有没有办法判断 MySQL 联合查询中的结果集何时发生变化?

标签 mysql union

有没有办法添加分隔符或知道联合查询中的结果集何时更改?例如:

SELECT * FROM table1 WHERE name >= 'a' AND name < 'g'
UNION  ALL
SELECT * FROM table1 WHERE name >= 'g' AND name < 'k'

在遍历结果时,有没有办法在遍历结果时知道它现在正在遍历第二个查询的结果?我希望一些简单的东西而不是使用 PHP 来获取第一个字母来查看当前结果是否仍在 g 和 g 之间,或者它现在是否在 g 和 k 之间。我可以添加一个自定义分隔符字段来告诉我现在何时访问下一个查询的结果吗?希望这是有道理的。

最佳答案

是的,您可以将计算列添加到 UNION查询,然后按它排序:

SELECT *, 1 AS position FROM table1 WHERE name >= 'a' AND name < 'g'
UNION  ALL
SELECT *, 2 FROM table1 WHERE name >= 'g' AND name < 'k'
ORDER BY position;

这将放置来自 a <= name < g 的记录首先查询,然后是 g <= name < k 中的记录第二个查询。

关于mysql - 有没有办法判断 MySQL 联合查询中的结果集何时发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52772731/

相关文章:

mysql查询加入query2

my.cnf 中具有多种数据库编码的 MySQL

MySql UNION SELECT 缺少字段

mysql - 是否可以将此业务逻辑放在 SQL 查询中?

php - mysql 选择之前 n 行和之后 n 行

mysql - 授予权限mysql服务器

mysql - 一组以多对一的方式加入一排

mysql - has_many 通过不同的外键

mysql - 组合来自同一个表的两个 MySQL 查询

mysql连接表