Mysql 在子查询中访问父列信息

Mysql 在子查询中访问父列信息,mysql,Mysql,我正在尝试编写一个子查询,以便在较大的查询中使用,我正在编写的子查询需要从主列获取.workorder\u id 这一个有效(注意x.workorder\u id='805') 然而,当我更改x.workorder\u id=a.workorder\u id时,它不再工作,并告诉我 #1054-where子句中的未知列“a.workorder\u id” SELECT a.* , ( SELECT SUM( maxes ) qty FROM ( SELECT MAX( qt

我正在尝试编写一个子查询,以便在较大的查询中使用,我正在编写的子查询需要从主列获取.workorder\u id

这一个有效(注意x.workorder\u id='805')

然而,当我更改x.workorder\u id=a.workorder\u id时,它不再工作,并告诉我

#1054-where子句中的未知列“a.workorder\u id”

SELECT a.* , 
( SELECT SUM( maxes ) 
  qty FROM  ( 
     SELECT MAX( qty ) maxes 
     FROM `mtborah_rework_line` x 
     WHERE x.workorder_id = a.workorder_id 
     GROUP BY x.size 
  ) as tba 
) tmpsum 
FROM mtborah_rework_line a 
WHERE a.workorder_id = '805' 
GROUP BY a.workorder_id

我肯定这是我忘了的简单的事情,但在我所有的谷歌搜索中我都找不到怎么做,我还试着在freenode上的mysql室询问,他们只会说将其重写为一个连接,这是不可能的,因为我正在使用的查询如果我重新加入此表,它将通过我的计数和总和

可能我遗漏了一些内容,但是为什么不在联接中使用子查询而不是相关子查询来重写此内容:

SELECT a.*, qty
FROM mtborah_rework_line a 
LEFT JOIN
(
  SELECT SUM(maxes) qty, workorder_id
  FROM
  (
    SELECT MAX( qty ) maxes, x.workorder_id
    FROM `mtborah_rework_line` x 
    GROUP BY x.size, x.workorder_id
  ) m
  GROUP BY workorder_id
) q
  on a.workorder_id = q.workorder_id
WHERE a.workorder_id = '805';
或者甚至是这样:

SELECT a.*, SUM(maxes) qty
FROM mtborah_rework_line a 
LEFT JOIN
(
  SELECT MAX(qty) maxes, x.workorder_id
  FROM `mtborah_rework_line` x 
  GROUP BY x.size, x.workorder_id
) q
  on a.workorder_id = q.workorder_id
WHERE a.workorder_id = '805' 
GROUP BY a.workorder_id;

第一个有效,谢谢(第二个不行,因为它又增加了5行,将在我的另一个sum()中汇总) statements@TimHolum很高兴它能起作用。如果这个答案有帮助,或者你的问题的任何答案都有帮助,那么一定要通过它左边的复选标记接受它。这将有助于网站的未来访问者,你将得到网站代表的接受。:)是的,我不得不等待5分钟来接受它:),再次感谢
SELECT a.*, SUM(maxes) qty
FROM mtborah_rework_line a 
LEFT JOIN
(
  SELECT MAX(qty) maxes, x.workorder_id
  FROM `mtborah_rework_line` x 
  GROUP BY x.size, x.workorder_id
) q
  on a.workorder_id = q.workorder_id
WHERE a.workorder_id = '805' 
GROUP BY a.workorder_id;