使用MySQL

时间:2016-05-14 15:40:08

标签: mysql sql sql-view

在MySQL中创建视图时,我无法在创建的视图中看到具有NULL值的行。

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

和表status

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中具有空值的行,我想知道为什么会这样,并且可以在创建的视图中显示带有NULL的行。

谢谢

1 个答案:

答案 0 :(得分:2)

要获取所有行,包括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