如何在MySQL查询中有条件地连接表
嗨如何在MySQL查询中有条件地连接表,mysql,Mysql,嗨 我有三个表,即账户,公司和自由职业者。accounts表包含电子邮件、密码和帐户类型字段,其中if帐户类型值为枚举(“公司”、“自由职业者”)。我想知道,如果帐户类型字段等于公司,我如何编写一个与公司表关联的查询,如果您想将所有数据都放到一个表中,则应与自由职业者 您可以简单地使用联合来绑定从连接两个表中获得的两个结果集 SELECT * FROM users Accounts a LEFT JOIN Companies c ON c.account_id = a.id WHERE
我有三个表,即
账户
,公司
和自由职业者
。accounts表包含电子邮件
、密码
和帐户类型
字段,其中if帐户类型
值为枚举(“公司”、“自由职业者”)
。我想知道,如果帐户类型
字段等于公司
,我如何编写一个与公司
表关联的查询,如果您想将所有数据都放到一个表中,则应与自由职业者
联合
来绑定从连接两个表中获得的两个结果集
SELECT * FROM users Accounts a
LEFT JOIN Companies c ON c.account_id = a.id
WHERE a.account_type = 'companies'
UNION
SELECT * FROM users Accounts a
LEFT JOIN Freelancers f ON f.account_id = a.id
WHERE a.account_type = 'freelancers'
SELECT
Accounts .id,
Accounts .type,
Companies .account_id AS id2,
Freelancers .account_id AS id3
FROM Accounts
LEFT JOIN Companies ON Accounts .id = Companies .account_id AND Accounts .type = 'companies'
LEFT JOIN Freelancers ON Freelancers .account_id = Accounts .id AND Accounts .type = 'freelancers'
SELECT Accounts.column1,
COALESCE(Companies.column2, Freelancers.column3), -- common column
Companies.column4, -- specific column
Freelancers.column5 -- specific column
FROM Accounts
LEFT JOIN Companies ON Companies.account_id = Accounts.id
AND Accounts.account_type = 'companies'
LEFT JOIN Freelancers ON Freelancers.account_id = Accounts.id
AND Accounts.account_type = 'freelancers'
我想你不能换桌子吧?因为如果可以,我会将公司和自由职业者的所有条目放在一个表中,并将account type enum列添加到该表中。然后,您可以使用此列简单地加入。这回答了你的问题吗?欢迎来到SO。请看