使用Case或If联接查询

时间:2018-08-28 12:13:44

标签: mysql sql join

我有一个交易表(包括所有交易),买方表(包括买方ID,姓名和其他详细信息),卖方表(包括卖方ID,姓名和其他详细信息)

在交易表中有两列用户ID(对应的卖方或买方ID)和用户标志(具有两个值之一(“买方”或“卖方”))。

我想根据用户标志和用户ID从买方或卖方表中了解用户名。我尝试使用以下查询,但似乎无法正常工作。

SELECT trans.* 
FROM transaction_summary AS trans 
LEFT JOIN 
  (SELECT * FROM CASE WHEN trans.user_flag = 'buyer' THEN Buyer ELSE Seller END AS users) 
ON users.id = trans.user_id 
ORDER BY transaction_id desc

2 个答案:

答案 0 :(得分:2)

尝试一下:

select t.*,
       case when trans.user_flag = 'buyer' 
            then (select name from buyers where id = t.user_id)
            else (select name from seller where id = t.user_id)
       end as name
from transactions t

答案 1 :(得分:0)

您不能动态加入。联接两个表并使用case

选择值
SELECT trans.*, 
       case when trans.user_flag = 'buyer' 
            then b.name
            else s.name
       end as name
FROM transaction_summary trans 
LEFT JOIN Buyer b on b.id = trans.user_id
LEFT JOIN Seller s on s.id = trans.user_id
ORDER BY transaction_id desc