我有 3 个表,日志、成员(member)、访客,但我的日志仅存储为客户(用户)的 id,即他们的 guest_id 或成员(member)ID。所以这就是问题,因为它们来自不同的表,我不确定如何将它们的数据连接和分组在一起。
checkout_log表
id user_id checkout_as
--------------------------------------
1 1 member
2 2 guest
成员表
id fullname
--------------------------------------
1 member01
2 member02
宾客 table
id fullname
--------------------------------------
1 guest01
2 guest02
我想要实现的目标 - 结果
id user_id fullname checkout_as
----------------------------------------------
1 1 member01 member
2 2 guest02 guest
曾尝试使用 UNION ALL 或 GROUP BY 执行以下 sql 语句,但没有成功。
SELECT * FROM
(
SELECT checkout_log.id,checkout_log.user_id,guests.fullname,guests.email,checkout_log.checkout_as
FROM checkout_log
LEFT JOIN checkout_product ON checkout_product.checkout_log_id = checkout_log.id
LEFT JOIN guests ON checkout_log.user_id = guests.id
UNION ALL
SELECT checkout_log.id,checkout_log.user_id,members.fullname,members.email,checkout_log.checkout_as
FROM checkout_log
LEFT JOIN checkout_product ON checkout_product.checkout_log_id = checkout_log.id
LEFT JOIN members ON checkout_log.user_id = members.id
) derivedTable
GROUP BY id
最佳答案
尝试使用连接而不是联合来执行此操作
select cl.id, cl.user_id,
coalesce(m.fullname, g.fullname) as fullname,
cl.checkout_as
from checkout_log cl left join
members m
on cl.user_id = m.id and cl.checkout_as = 'member' left join
guests g
on cl.user_id = g.id and cl.checkout_as = 'guest';
关于MYSQL - Union SELECT 和 GROUP BY 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453778/