2016-11-21 25 views
1

我有一個停電 - 我有以下表結構:SQL - 確定是否存在具有特定電子郵件的用戶的訂單?

s_order: 
userID | .... 

s_user: 
id | email | ... 

我現在通過我的所有訂單環,可以讀取用戶的用戶ID。我現在想檢查這個客戶是否有其他的訂單,沒有通過他的ID識別,而是通過他的電子郵件地址(由於遷移,這可能發生)。

它可以是,在該s_user表我有以下數據:

s_user: 
id | email | ... 
1 | [email protected] 
2 | [email protected] 

有人能幫忙嗎?謝謝!

+1

添加更多的樣本表數據和預期的結果。 – jarlh

+0

2個用戶可以擁有相同的電子郵件地址? –

+1

「由於遷移,這可能發生」 - 它不應該發生在第一個地方 –

回答

2

這裏有一個方法:

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; 

你可以用命令限制只是爲了用戶:

select u.email, group_concat(u.id) as userid 
from s_user u 
where u.id in (select o.user_id from s_order) 
group by u.email 
having count(*) > 1; 
相關問題