我对复杂的 SQL 查询有疑问。
我有 3 个表:user、user_type1、user_type2
我正在尝试根据用户的类型选择用户的详细信息。我尝试使用 CASE 为 LEFT JOIN 动态选择表名,但失败了。我也尝试过 UNION 但似乎列必须相同。
唯一可行的方法是连接两个表,但结果还包含来自错误表的所有空值......
我正在寻找一种方法来摆脱这些错误的字段,或者只为好表做 LEFT JOIN。
这是我当前的代码:
SELECT
user.*,
user_type1.*,
user_type2.*
FROM user
LEFT JOIN user_type1
ON user_type1.user_id = user.id
LEFT JOIN user_type2
ON user_type2.user_id = user.id
AND user.id = 1
通常我只做非常简单的查询,所以我有点困惑。谢谢,如果你能帮助我。
编辑:主表是用户,只有 2 个字段:ID 和类型。
其他表包含有关用户的详细信息。user_type1 用于人。字段是姓名,年龄,...
user_type2 用于公司。这些字段是姓名、法律形式、员工人数、...
所以我只知道用户表中的 ID,我需要获取好表的字段。
如果 user.id 为 1 且 user.type 为 type1,我希望 mysql 从 user_type1 表中获取所有字段...