如何将三段sql语句存到一个结果集中返回?

这是我的SQL语句:

             select
                                    a.amount as suixi_money,
                                    a.amodanaTime as suixi_tiem,
                                    a.registerMobile as principal_tel_number,
                                    b.type as activity_type,
                                    c.name as query_nickname,
                                    c.mobile as query_tel_number,
                                    c.realName as query_name
                               from tb_activity_record a
                                left join tb_activity b on a.activityId = b.id
                                left join tb_member c on a.memberId = c.id
                        where 1=1
                                and b.uid = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
                                and  (
                                c.name like '1%'
                                or c.realName like '1%'
                                or c.mobile like '1%'
                                 )

                            select count(*) from (select distinct memberId from tb_activity_record ) ac


                            select SUM(amount) from tb_activity_record

这三段:
图片说明

万分感谢

 SELECT
    A .amount AS suixi_money,
    A .amodanaTime AS suixi_tiem,
    A .registerMobile AS principal_tel_number,
    b. TYPE AS activity_type,
    c. NAME AS query_nickname,
    c.mobile AS query_tel_number,
    c.realName AS query_name,
ac.count,
su.SUM
FROM
(select count(*) count from (select distinct memberId from tb_activity_record ) d) ac,
(select SUM(amount)  SUM from tb_activity_record) su,
    tb_activity_record A
LEFT JOIN tb_activity b ON A .activityId = b. ID
LEFT JOIN tb_member c ON A .memberId = c. ID

WHERE
    1 = 1
AND b. UID = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
AND (
    c. NAME LIKE '1%'
    OR c.realName LIKE '1%'
    OR c.mobile LIKE '1%'
)

你第一段sql查不出数据啊?

如果你第一段sql查询的也只有一条记录的话,直接三段sql拼接再一起就行了

 SELECT
    A .amount AS suixi_money,
    A .amodanaTime AS suixi_tiem,
    A .registerMobile AS principal_tel_number,
    b. TYPE AS activity_type,
    c. NAME AS query_nickname,
    c.mobile AS query_tel_number,
    c.realName AS query_name,
ac.count,
su.SUM
FROM
(select count(*) from (select distinct memberId from tb_activity_record )) ac,
(select SUM(amount) from tb_activity_record) su,
    tb_activity_record A
LEFT JOIN tb_activity b ON A .activityId = b. ID
LEFT JOIN tb_member c ON A .memberId = c. ID

WHERE
    1 = 1
AND b. UID = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
AND (
    c. NAME LIKE '1%'
    OR c.realName LIKE '1%'
    OR c.mobile LIKE '1%'
)

用UNION连接sql

select
    a.amount as suixi_money,
    a.amodanaTime as suixi_tiem,
    a.registerMobile as principal_tel_number,
    b.type as activity_type,
    c.name as query_nickname,
    c.mobile as query_tel_number,
    c.realName as query_name,
    0 as count,
    0 as sum,
from tb_activity_record a
left join tb_activity b on a.activityId = b.id
left join tb_member c on a.memberId = c.id
where 1=1
and b.uid = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
and  (
c.name like '1%'
or c.realName like '1%'
or c.mobile like '1%'
)
union all
select 0,0,0,0,0,0,0,count(*),0 from (select distinct memberId from tb_activity_record ) ac
union all
select 0,0,0,0,0,0,0,0,SUM(amount) from tb_activity_record

with t1 (select
a.amount as suixi_money,
a.amodanaTime as suixi_tiem,
a.registerMobile as principal_tel_number,
b.type as activity_type,
c.name as query_nickname,
c.mobile as query_tel_number,
c.realName as query_name
from tb_activity_record a
left join tb_activity b on a.activityId = b.id
left join tb_member c on a.memberId = c.id
where 1=1
and b.uid = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
and (
c.name like '1%'
or c.realName like '1%'
or c.mobile like '1%'
)),
t2 (select count(*) from (select distinct memberId from tb_activity_record ) ac),
t3 (select SUM(amount) from tb_activity_record)

select * from t1,t2,t3 where 约束

用这个试试

 SELECT
    *
FROM
    (SELECT count(*) countAll FROM (SELECT DISTINCT memberId FROMtb_activity_record)) ac,
    (SELECT SUM(amount) sumAll FROM tb_activity_record) su,
    (select
    A.amount AS suixi_money,
    A.amodanaTime AS suixi_tiem,
    A.registerMobile AS principal_tel_number,
    b.TYPE AS activity_type,
    c. NAME AS query_nickname,
    c.mobile AS query_tel_number,
    c.realName AS query_name 
FROM tb_activity_record A
LEFT JOIN tb_activity b ON A.activityId = b.ID
LEFT JOIN tb_member c ON A.memberId = c.ID
WHERE 1 = 1 AND b.UID = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
AND c. NAME LIKE '1%' OR c.realName LIKE '1%'OR c.mobile LIKE '1%') abc
where ac.countAll is not null and su.sumAll is not null and abd.suixi_money is not null;

把第二句和第三句 sql 直接放到 第一段 sql的 查询条件中: 比如:
SELECT (SELECT COUNT(*) FROM 表) as c,id FROM 表;

select
a.amount as suixi_money,
a.amodanaTime as suixi_tiem,
a.registerMobile as principal_tel_number,
b.type as activity_type,
c.name as query_nickname,
c.mobile as query_tel_number,
c.realName as query_name,
sum(a.amount) as sumAmount,
(select count(*) from (select distinct memberId from tb_activity_record )) ac
from
tb_activity_record a
left join tb_activity b on a.activityId = b.id
left join tb_member c on a.memberId = c.id
where
b.uid = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
and (c.name like '1%' or c.realName like '1%'or c.mobile like '1%')

不报错了,我查了一下没数据,你看下怎么回事,是不是你的条件问题

 SELECT
    *
FROM
    (SELECT DISTINCT memberId countAll FROM tb_activity_record) ac,
    (SELECT SUM(amount) sumAll FROM tb_activity_record ) su,
    (select
    A.amount AS suixi_money,
    A.amodanaTime AS suixi_tiem,
    A.registerMobile AS principal_tel_number,
    b.TYPE AS activity_type,
    c. NAME AS query_nickname,
    c.mobile AS query_tel_number,
    c.realName AS query_name 
FROM tb_activity_record A
LEFT JOIN tb_activity b ON A.activityId = b.ID
LEFT JOIN tb_member c ON A.memberId = c.ID
WHERE 1 = 1 AND b.UID = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
AND c. NAME LIKE '1%' OR c.realName LIKE '1%'OR c.mobile LIKE '1%') abc
where ac.countAll is not null and su.sumAll is not null and abc.suixi_money is not null;

select
a.amount as suixi_money,
a.amodanaTime as suixi_tiem,
a.registerMobile as principal_tel_number,
b.type as activity_type,
c.name as query_nickname,
c.mobile as query_tel_number,
c.realName as query_name,
sum(a.amount) as sumAmount,
(select count(*) from (select distinct memberId from tb_activity_record )ac) as count
from
tb_activity_record a
left join tb_activity b on a.activityId = b.id
left join tb_member c on a.memberId = c.id
where
b.uid = '8445e6a4-9341-455b-bfef-81e0b5ed7a1e'
and (c.name like '1%' or c.realName like '1%'or c.mobile like '1%')

tb_member 表的主键id是13 tb_activity_record 里面的memberId 都是3 肯定没有数据哦

你直接把需求发给我 我给你写sql