使用 MySQL 在创建的 VIEW 中看不到 NULL 值
Can't see NULL values in created VIEW using MySQL
在 MySQL 中创建视图时,我在创建的视图中看不到具有 NULL 值的行。
这里可以看到tablemail_prijava
和tablestatus
所以,我想使用下面的 SQL 代码从 table mail_prijava
和 table 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
当使用上面的代码时,我得到这个 table:
问题是来自 table mail_prijava
的具有空值的行没有显示,我想知道为什么会这样,是否可以在创建的视图中显示具有 NULL 的行。
谢谢
要获取所有行,包括那些在 status
table 中没有任何匹配项的行,您需要使用 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 中创建视图时,我在创建的视图中看不到具有 NULL 值的行。
这里可以看到tablemail_prijava
和tablestatus
所以,我想使用下面的 SQL 代码从 table mail_prijava
和 table 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
当使用上面的代码时,我得到这个 table:
问题是来自 table mail_prijava
的具有空值的行没有显示,我想知道为什么会这样,是否可以在创建的视图中显示具有 NULL 的行。
谢谢
要获取所有行,包括那些在 status
table 中没有任何匹配项的行,您需要使用 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