mysql - 使用 UNION ALL 从两个表中获取数据

标签 mysql union

我有三个表:categories 和 deals1 以及 deals2。

我有下一个 mySQL 语句并且它有效:

SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = deals.id) AS categoria 
from deals1 where id = '1'

但是现在,我需要使用 UNION ALL 从两个不同的表中获取数据......像这样:

(SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = deals1.id) AS categoria 
from deals1 where id = '1')

UNION ALL

(SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = deals2.id) AS categoria 
from deals2 where id = '1')

它返回一个错误.... ¿获取联合数据的正确方法是什么?

非常感谢!


编辑: 我发现了问题...

在我的项目中我有:

... SELECT categoria FROM categorias WHERE categorias.id = **deals2.id**) AS categoria 
from **deals1** where id = '1')

接下来是正确的句子......如果你注意,你会看到差异(强词)......

(SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = **deals2.id**) AS categoria 
from **deals2** where id = '1')

感谢大家!

最佳答案

语法看起来是正确的,唯一困扰我的是括号:

我的查询语法总是:

SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = deals1.id) AS categoria 
from deals1 where id = '1'

UNION ALL

SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = deals2.id) AS categoria 
from deals2 where id = '1';

没有外括号...
请注意 - 子选择中的表格应该是 deals1/deals2 - 而不是交易。

但是 - 你得到的错误是什么?

此外 - 您是要使用 union all 还是 union(您希望相同的结果出现一次还是多次)? union 还会添加一个隐含的“distinct”,通过措辞 - 我想你期望,但我不确定(union all 只会连接结果,如果产生相同的记录,结果会重复)

关于mysql - 使用 UNION ALL 从两个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22817978/

相关文章:

mysql - 使用连接表进行分组并计算总和

mysql - 是否有 JDBC w/liquibase 和 MySQL session 变量和客户端 SQL 指令的解决方法

php - mysql UNION 语句工作很奇怪

java - 如何求两个集合的交集和并集

MySQL - 如何在一个(UNION)查询中选择最小值和最大值

PHP - 获取 MySQL 数据库中按序列化日期排序的行

mysql - 如何将所有 50 个州设置为国家代码为 'US'

php - 最后每个条目的不同 css 样式

php - 如何使用 SELECT 通过 IN 和 EQUAL 命令获取行?

sql - 结合 2 个复杂的查询