Mysql 使用UNION ALL从两个表中获取数据
我有三张表:类别和交易1和交易2 我有下一个mySQL句子,它是有效的:Mysql 使用UNION ALL从两个表中获取数据,mysql,union,Mysql,Union,我有三张表:类别和交易1和交易2 我有下一个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 WH
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')
下面是正确的句子。。。如果你付出一点努力,你会看到不同之处(强有力的词语)
谢谢大家 首先检查表名,您说的是它的deals1和deals2,但是在union all First查询中
(SELECT name,
(SELECT categoria FROM categorias WHERE categorias.id = deals.id) AS categoria
from deals where id = '1')
它的“deals”。语法看起来正确,唯一让我困扰的是括号: 我的查询的语法始终是:
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-而不是deals 但是-你的错误是什么
另外-是否要使用union all或union(是否希望相同的结果显示一次或多次)?union还将添加一个隐式的“distinct”,我想你会这样想,但我不确定(union all只会连接结果,如果生成相同的记录,结果会重复)mysql\u num\u rows()希望参数1是资源,但我不想排除重复记录,这就是为什么我使用UNION ALL。我得到的错误是:自定义错误:[2]mysql\u num\u rows()希望参数1是resource,boolean given而不是我刚刚修复的。categorias.id是主键吗?is deals1/deals2.id是表的FK,并且也不为null?上次更改之前的问题是,subselect生成的结果不超过1个(因为它加入了错误的源表)。在最后一次更改之后,确保每个deal1/2.id在caategorias表中都有一个匹配的记录。。。请看帖子。非常感谢。检查mysql中的查询,看看它是否返回结果。我发现了问题。。。请看帖子。非常感谢。
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';