MYSQL - Union SELECT 和 GROUP BY 不起作用

标签 mysql database group-by distinct union

我有 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 ALLGROUP 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/

相关文章:

mysql - 带条件的 SQL GROUP BY?

sql - 连续3天查找状态相同的sql表数据的方法

sql - 如何拥有每月重置的数据库计数器?

c# - 哪些 OR 映射器允许相同表之间的一对多和一对一关系?

sqlite - SUM()函数在sqLite中不起作用

r - R 中新客户和回头客的数量

c# - 按列表中的多个项目进行分组,然后求和并平均 C#

php - codeigniter 数组和循环插入多个数据

Mysql 1242 执行存储过程时出错

mysql - 我应该在单次选择后提交吗