我正在寻求一个想法或最佳实践来执行以下操作:
我有桌子:
profile
包含基本信息(id,email,pass,lvl)
profile_user
包含(pid,名称,年龄等)
profile_mod
包含(pid,company_name,money等)。
你可以看到我会在两个表上保持连接以获取整个信息,但是连接将全部基于属性lvl。如果lvl = 1,它将在profile_user上保留jojo,而lvl = 2将在profile_mod上执行连接。
我的问题是,我不想对每个查询执行检查以获取lvl,然后在其他两个表上执行leftjoin。我想知道这种情况是否有最好的做法。
答案 0 :(得分:3)
你可以这样做:
SELECT *
FROM profile a
LEFT JOIN profile_user b ON a.id = b.pid AND a.lvl = 1
LEFT JOIN profile_mod c ON a.id = c.pid AND a.lvl = 2
如果lvl
为1
,则profile_user
中的字段值将填充,profile_mod
中的值将为NULL
。
同样,如果lvl
为2
,profile_user
中字段的值将为NULL
,但profile_mod
中的值将会填充。