Mysql UNION作为带有别名字段的子查询

Mysql UNION作为带有别名字段的子查询,mysql,subquery,union,Mysql,Subquery,Union,我有一个联合查询,如下所示(我简化了我的工作查询,以便更容易阅读): 这可以很好地工作,并产生一个具有列名COUNT(*)的数字 我希望将此值作为另一个查询中的另一列获取,因此我执行以下操作: SELECT DISTINCT `tableC`.`id as PID, (SELECT count(*) from (SELECT DISTINCT `tableA`.`Store Name` FROM `tableA` UNION SELECT DISTINCT `tableB`.`Store Nam

我有一个联合查询,如下所示(我简化了我的工作查询,以便更容易阅读):

这可以很好地工作,并产生一个具有列名COUNT(*)的数字

我希望将此值作为另一个查询中的另一列获取,因此我执行以下操作:

SELECT DISTINCT `tableC`.`id as PID,
(SELECT count(*) from (SELECT DISTINCT `tableA`.`Store Name` FROM `tableA` UNION SELECT DISTINCT `tableB`.`Store Name` FROM `tableB`) t) AS noofstores
WHERE
.....;
但是它不起作用!我做错了什么?这是一个更大查询的一部分,当我这样做时,所有其他子查询都可以正常工作

,
(SELECT .... ) AS column_name
,
抱歉,错误描述不好。更新: 这是我的全部疑问:

SELECT DISTINCT
`tableC`.`id` as PID,
(SELECT count(*) 
from 
(SELECT DISTINCT `tableA`.`Store Name` FROM `tableA` WHERE  `tableA`.`id` = PID 
 union 
 SELECT DISTINCT `tableB`.`Store Name` FROM `tableB` WHERE  `tableB`.`id` = PID) t) AS mycolumn_name
 FROM 
 `tableC`
看起来我的工会是对的,但问题是我在工会中引用的PID:

1054-where子句中的未知列“PID”
那么我该如何解决这个问题呢?

您必须将这两个表连接起来才能得到结果

  SELECT DISTINCT c.id as PID from  table C inner join 
        (SELECT count(*) from 
(SELECT DISTINCT `tableA`.`Store Name` as st 
 FROM `tableA` UNION  SELECT DISTINCT `tableB`.`Store Name` as st
    FROM `tableB`) t on t.some_id=c.id WHERE

PID列不存在于内部子查询中,仅存在于外部查询中。要么在表C上的union中的两个查询中进行内部联接并在其中进行过滤,要么需要在union查询中返回id列并在它们上联接PID以进行过滤

select tableC.id as PID, count(distinct storename) 
from
    (select distinct id, storename from tableA
     union
     select distinct id, storename from tableB) t1
inner join tableC on t1.id=tableC.id
group by tableC.id

请提供准确的错误信息,而不仅仅是它不起作用!在示例查询中,您缺少
from
子句,但我想这只是示例代码的一个问题。关键是:如果没有准确的错误消息和完整的查询,就不可能判断出可能出现了什么问题。我只想统计并选择不同的storename,上面的查询统计IDU更新了count()函数,这应该可以解决问题。
select tableC.id as PID, count(distinct storename) 
from
    (select distinct id, storename from tableA
     union
     select distinct id, storename from tableB) t1
inner join tableC on t1.id=tableC.id
group by tableC.id