mysql - 使用 MySQL 在创建的 VIEW 中看不到 NULL 值

标签 mysql sql sql-view

在 MySQL 中创建 View 时,我在创建的 View 中看不到具有 NULL 值的行。

这里我们可以看到表mail_prijava enter image description here

和表状态

enter image description here

所以,我想使用下面的 SQL 代码从表 mail_prijava 和表 status 创建 VIEW

CREATE OR REPLACE VIEW
v_mail_prijava_test
AS
SELECT
mail_prijava.id,
mail_prijava.naselje AS naselje,
mail_prijava.ulica AS ulica,
mail_prijava.email AS email,
mail_prijava.napomena AS napomena,
IFNULL(status.opis AS "test") AS status
DATE_FORMAT(datum_unosa, "%d.%m.%Y.") AS datum_servisa,
vrijeme_unosa
FROM mail_prijava
INNER JOIN status ON status.id = mail_prijava.status_id

当使用上面的代码时,我得到了这张表: enter image description here

问题是表 mail_prijava 中具有空值的行没有显示,我想知道为什么会这样,是否可以在创建的 View 中显示具有 NULL 的行。

谢谢

最佳答案

要获取所有行,包括那些在 status 表中没有任何匹配项的行,您需要使用 left join 而不是 inner join

改变这个:

INNER JOIN status ON status.id = mail_prijava.status_id

对此:

LEFT JOIN status ON status.id = mail_prijava.status_id

此外,您的 IFNULL 行看起来很奇怪,您可能想要:

IFNULL(status.opis, "test") AS status -- this will show "test" as status if it's null

关于mysql - 使用 MySQL 在创建的 VIEW 中看不到 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37228623/

相关文章:

php代码写入变量

mysql - 不要带一排 table

MySql,计算多个组并创建 View

java - sql语法错误(使用jSTL标签)

php - 无法使用 PHP MySQL 更新数据库,其中数据来自 AngularJS1.2 服务

mysql - RDBMS - 无法弄清楚将该表放置在哪里

java - Jpa&Hibernate是否加载数据库中异步更改的数据?

mysql - 在 View 中选择 count()

mysql - Hive 中的高效子查询

sql - Coldfusion & SQL 创建递归树