我有三个表: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/