【发布时间】:2015-08-02 11:15:14
【问题描述】:
假设我在 MySql 中有两个表。
值(地址字段值)
字段(地址字段)
可能是某些人(值表中的user_id)没有填写所有地址字段。 这意味着它们只有某些字段的值。
要检索所有其他尚未使用的字段的所有值,我正在执行左右连接的联合: (由于 MYSQL 没有 FULL OUTER JOIN,所以使用联合)。
SELECT field.*, value.*
FROM field
LEFT JOIN value ON field.id = value.field_id
WHERE
value.user_id='4'
union
SELECT field.*, value.*
FROM field
RIGHT OUTER JOIN value ON field.id = value.field_id
WHERE
value.user_id='4'
上述联合并没有做我想要实现的目标。 User=4 仅填写了 50 个字段中的 4 个。查询结果仅返回 4 个。 如果我在第二个替换选择
value.user_id='4'
有一个
GROUP BY field.id
然后它返回 54 行(4 行已填写,外加所有 50 个可能的字段以及来自其他用户的值)。 我也尝试使用虚拟值作为值。* 但是联合也没有正确合并记录,它再次返回 54 行。
有没有办法实现我的需要? 感谢您的任何想法......。
【问题讨论】:
标签: mysql join left-join union right-join