我想要实现的是创建一个由几个子查询组成的复杂查询。我们的想法是把它交给一个业务人员,让他每周运行一次,以提取报告数据。
效果类似于下面的查询,其中来自多个表的所有数据显示在一个结果中。
select * from table1, table2, table3
所以我需要像这样的东西,但是它不起作用。
select
(select * from table1 where ...... ) as table1,
(select * from table2 where....... ) as table2
手动地,我可以单独运行子查询,然后手动将结果附加到一个大的excel表格中。但我想让商务人士更容易做到这一点,并尽量减少错误。
在MySQL中是可能的吗?
这样做的原因是我正在将旧的Oracle PIVOT SQL语句转换为MySQL等价,并且子查询非常复杂。
如果需要,我可以提供Oracle SQL。
一如既往的感谢。
经过一番折腾:
select * from
(select * from table1 where survey_user_id=4 ) as T1
,
(select * from table2 where survey_field_type_id=100 ) as T2
,
(select * from table3 ) as T3
如果我理解正确的话,你只需要UNION:D
(SELECT column1 AS name1, column2 AS name2 FROM table1 WHERE ...... )
UNION
(SELECT column3 AS name1, column4 AS name2 FROM table2 WHERE ...... )
UNION
....
正如下面评论中提到的,列需要有相同的名称(您可以使用别名),并保持相同的顺序。
select main.*,
(select col from tbl1 where tbl1.id=main.id) as col1,
(select col from tbl2 where tbl2.id=main.id) as col2,
(select col from tbl3 where tbl3.id=main.id) as col3
from master as main