SQL - 确定是否存在具有特定电子邮件的用户的订单?

时间:2016-11-21 11:11:24

标签: mysql sql

我停电了 - 我有以下表结构:

s_order:
userID | ....

s_user:
id | email | ...

我现在遍历所有订单,可以读取客户的用户ID。我现在想检查这个客户是否有其他订单,不是通过他的身份识别,而是通过他的电子邮件地址(由于迁移,这可能发生)。

可以是,在s_user表中我有以下数据:

s_user:
id | email | ...
1 | hello@domain.com
2 | hello@domain.com

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:2)

这是一种方法:

content

但是,仅查看多个用户是否拥有相同的电子邮件可能就足够了。如果是这样,这是最简单的方法:

select u.*,
       (case when exists (select 1
                          from s_order o2 join
                               s_user u2
                               on o2.user_id = u2.id
                          where u2.email = u.email and u2.id <> u.id
                         )
              then 'Yes' else 'No'
        end) as HasDuplicate
from s_user u;

您可以将此限制仅限于订单用户:

select u.email, group_concat(u.id) as userid
from s_user u
group by u.email
having count(*) > 1;