Php 如何在JOIN语句中使用CASE根据条件连接两个表?

Php 如何在JOIN语句中使用CASE根据条件连接两个表?,php,mysql,join,left-join,case,Php,Mysql,Join,Left Join,Case,我有三张表格:电子邮件、新客户和旧客户。 现在在email表中有一个名为type的字段,其中包含0或1 因此,如果type包含0,那么我想从customer\u new表中获取name列,从customer\u old表中获取其他列 为此,我进行了以下mysql查询: SELECT email.*, CASE email.`type` WHEN 1 THEN customer_old.name ELSE customer_new.name END AS customer_nam

我有三张表格:电子邮件新客户旧客户。 现在在email表中有一个名为type的字段,其中包含01
因此,如果type包含0,那么我想从customer\u new表中获取name列,从customer\u old表中获取其他列

为此,我进行了以下mysql查询:

SELECT email.*, 
CASE email.`type`
    WHEN 1 THEN customer_old.name
    ELSE customer_new.name
END AS customer_name 
LEFT JOIN 
CASE email.`type`
    WHEN 0 THEN customer_new ON email.customer_id = customer_new.id
    ELSE customer_old ON email.customer_id = customer_old.id
END
FROM email
现在,当我运行这个查询时,mysql总是抛出错误。
有人能根据条件通过CASE语句解决我关于连接两个表的问题吗

提前感谢。

尝试下面的查询

SELECT email . * , IF( email.type = '1', customer_old.name, customer_new.name ) AS name 
FROM email
LEFT JOIN customer_old ON ( customer_old.id = email.customer_id ) 
LEFT JOIN customer_new ON ( customer_new.id = email.customer_id )
您可以使用left join优化执行。

另一种选择

SELECT * FROM email 
LEFT JOIN customer_new AS customer ON email.customer_id = customer.id 
WHERE email.type = 0

UNION

SELECT * FROM email 
LEFT JOIN customer_old AS customer ON email.customer_id = customer.id 
WHERE email.type = 1

你能举一个使用它的例子吗?
SELECT * FROM email 
LEFT JOIN customer_new AS customer ON email.customer_id = customer.id 
WHERE email.type = 0

UNION

SELECT * FROM email 
LEFT JOIN customer_old AS customer ON email.customer_id = customer.id 
WHERE email.type = 1