【发布时间】:2020-02-09 21:06:00
【问题描述】:
我有多个 SELECT 语句,它们都返回相同的列,但可能返回不同的结果集。有没有办法在数据库级别选择 all 结果集中的所有行?
例如
|---------------------|------------------|---------|
| ID | Name | Age |
|---------------------|------------------|---------|
| 1 | Paul | 50 |
| 2 | Peter | 40 |
| 3 | Frank | 20 |
| 4 | Pascal | 60 |
|---------------------|------------------|---------|
SELECT 1
SELECT name FROM table WHERE age > 40
Result: Paul, Pascal
SELECT 2
SELECT name FROM table where name like 'P%'
Result: Paul, Peter, Pascal
SELECT 3
SELECT name FROM table where id > 3
Result: Pascal
编辑:这是我的问题的一个非常简化的示例。语句可能会变得非常复杂(连接多个表),因此 WHERE 部分中的简单 AND 不是最终解决方案。
结果应该是Pascal。我正在寻找类似“反向UNION”的东西。
另外,也可以通过编程方式实现(NodeJS),但我想避免遍历所有结果集,因为它们可能非常庞大。
提前致谢!
【问题讨论】:
-
Paul 和 Thomas 都不在所有结果集中。保罗只在#1 和#2,托马斯只在#1 和#3。所以整个结果集应该是空的。还是我弄错了?
-
对不起,我的错。我将“Thomas”更改为“Pascal”并修复了结果集以保持简单。 :)
-
复杂?加入?选定的列和行不是来自同一个表吗?顺便说一下,您正在寻找的是标准 SQL 中的
INTERSECT,但 MySQL 不支持它。 -
这正是我想要的!很遗憾,MySQL 不支持这一点。 :(
-
好的,期望完全相同的数据,但来自不同的表是有点罕见的。唯一能想到的这种情况是模仿原始表的历史表。也许您应该在这里显示您的真实查询以获得更好的帮助。好吧,也许只是接受其中一个答案,然后提出新的请求。
标签: mysql sql node.js select resultset