3

我正在寻找一个想法或最佳实践来执行以下操作:

我有表格: profile包含基本信息(id、email、pass、lvl) profile_user包含(pid、name、age 等) profile_mod包含(pid、company_name、money 等)

如您所见,我将对两个表进行左连接以获取全部信息,但连接将全部基于属性 lvl。如果 lvl=1 它将在 profile_user 上左连接,而 lvl=2 将在 profile_mod 上执行连接。

我的问题是,我不想对每个查询进行检查以获取 lvl,然后在其他两个表上执行 leftjoin。我想知道这种情况是否有最佳实践。

4

1 回答 1

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_userprofile_modNULL

同样,如果lvlis 2,字段的值profile_user将是NULL,但profile_mod将填充 in 的值。

于 2012-07-29T02:32:41.847 回答