我在执行复杂的 SQL 查询时遇到问题。
我有 3 张 table : 用户, 用户类型1, 用户类型2
我正在尝试根据用户的类型选择用户的详细信息。 我尝试使用 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
通常我只做非常简单的查询,所以我有点困惑。如果您能帮助我,谢谢。
编辑: 主表是user,只有2个字段:ID和Type。
其他表包含有关用户的详细信息。 user_type1 是针对人的。这些字段是姓名、年龄...
user_type2 适用于公司。这些字段包括姓名、法律形式、员 worker 数……
所以我只知道用户表中的 ID,我需要获取好表的字段。
如果user.id为1且user.type为type1,我希望mysql从user_type1表中获取所有字段...
最佳答案
你可以试试这个:-
select *
from user, user_type1, user_type2
where user_type1.user_id = user.id and user_type2.user_id = user.id AND user.id = 1
关于php - mysql : left join on variable table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18378000/