【问题标题】:MySql nested view return blank or 0 instead null valueMySql 嵌套视图返回空白或 0 而不是空值
【发布时间】: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

结果:

Select result

您可以看到,在左连接为 null 之后,下一行的 role_pk 为 0,而不是正确的数字,而 role_id 为空白,而不是 id。

如果我删除 user_view 并让角色加入 select 它将起作用。

谢谢

【问题讨论】:

  • 为什么你认为inner joinleft join 的结果是一样的?
  • @XING 不,我没想到,但是例如 tile_pk 27 的行应该有 role_id 的值,而不是像现在这样的空白。当值为 NULL 时没关系,但当值应该是其他值时,我得到 0 或空白。

标签: mysql select join left-join


【解决方案1】:

看来我只有在我的笔记本电脑上有这个问题。我制作了 SQL Fiddle link,结果是我所期望的(正常)。但是当我在笔记本电脑上运行那个 sql fiddle 时,我得到了错误的结果。 我使用 5.7.11 版本的 HeidiSql。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-13
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多