【发布时间】:2018-04-20 21:05:36
【问题描述】:
当左连接表中有视图时,我有奇怪的选择结果
用户视图:
CREATE VIEW user_view AS
SELECT
t1.app_user_pk,
t1.app_user_id,
t1.app_user_username,
t1.app_user_email,
t1.app_user_active,
t1.app_user_changed,
t1.app_user_created,
t2.role_pk,
t2.role_id
FROM
app_user t1
INNER JOIN role t2 ON t1.role_fk = t2.role_id
选择:
SELECT
t1.tile_pk,
t1.tile_id,
t1.tile_name,
t3.app_user_pk,
t3.app_user_id,
t3.role_pk,
t3.role_id
FROM tile t1
LEFT JOIN user_view t3
ON t1.app_user_fk = t3.app_user_id
结果:
您可以看到,在左连接为 null 之后,下一行的 role_pk 为 0,而不是正确的数字,而 role_id 为空白,而不是 id。
如果我删除 user_view 并让角色加入 select 它将起作用。
谢谢
【问题讨论】:
-
为什么你认为
inner join和left join的结果是一样的? -
@XING 不,我没想到,但是例如 tile_pk 27 的行应该有 role_id 的值,而不是像现在这样的空白。当值为 NULL 时没关系,但当值应该是其他值时,我得到 0 或空白。
标签: mysql select join left-join