从多个SELECT子查询中获取数据,以便从MySQL数据库进行报告

use*_*967 15 mysql subquery

我想要实现的是创建一个由几个子查询组成的复杂查询.我们的想法是让业务人员每周运行以提取报告数据.

效果类似于下面的查询,其中来自许多表的所有数据都显示在一个结果中.

select * from table1, table2, table3
Run Code Online (Sandbox Code Playgroud)

所以我需要类似的东西,但它不起作用.

select 
    (select * from   table1 where ...... ) as table1,
    (select * from   table2 where....... ) as table2
Run Code Online (Sandbox Code Playgroud)

手动,我可以单独运行子查询,然后手动将结果附加到一个大的Excel工作表中.但我希望让业务人员更容易做到这一点,并尽量减少错误.

这在MySQL中可行吗?

原因是我将旧的Oracle PIVOT SQL语句转换为MySQL等价,而子查询非常复杂.

如果需要,我可以提供Oracle SQL.

一如既往地赞赏.

use*_*967 25

经过一番摆弄:

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
Run Code Online (Sandbox Code Playgroud)

  • 有什么奇怪的。我有 31 行,我尝试使用您的查询。它返回给我 961 行 (31 x 31).... (3认同)

tke*_*ram 11

如果我理解你,你只需要UNION:D

(SELECT column1 AS name1, column2 AS name2 FROM table1 WHERE ...... )
UNION
(SELECT column3 AS name1, column4 AS name2 FROM table2 WHERE ...... )
UNION
....
Run Code Online (Sandbox Code Playgroud)

正如评论中所提到的,列需要具有相同的名称(您可以使用别名)并保持相同的顺序.