我需要重用子查询产生的表,但是当我尝试执行像这样的SQL时
SELECT id
FROM company
LEFT JOIN
(
SELECT * FROM sales
-- join
-- join
-- join
-- join
) foo
ON foo.company_id = company.id
LEFT JOIN
(
SELECT company_id,balance FROM foo -- generates error
UNION ALL
SELECT company_id,balance FROM manual_moves
) moves
ON moves.company_id = company.id;
-- note: the actual sub-query has been omitted to make it focused on the error
不幸的是我收到了错误
表'databaseName.foo'不存在
构建foo
表的子查询有很多连接,我不想再重写相同的子查询(我想这会对绩效产生影响)
有没有办法可以重复使用该子查询结果表的名称-foo-?
答案 0 :(得分:1)
首先将“foo”查询的内容转储到临时表中,然后在主查询中查询该临时表。