COALESCE是否可以正确使用VIEW?
问题描述:
我有我的view
定义:COALESCE是否可以正确使用VIEW?
CREATE VIEW `view` AS
SELECT a.id,
COALESCE(COALESCE(b.name, c.name), a.name) AS name
FROM a_table a
LEFT JOIN b_table b on a.b_id = b.id
LEFT JOIN c_table c on a.c_id = c.id
而且我更新a_table
一行新name
后,它不会在我的view
更新。但如果我更改name
到COALESCE(a.name, COALESCE(b.name, c.name)) AS name
它的作品。我的理解是COALESCE
。它需要第一个not null
值,在我的情况下它是b.name
,只有当b.name
更新时才会更新。
当COALESCE
值中的任何一个被更改时,是否有更新view
的选项?
答
COALESCE()
在视图中正常工作。它也需要多个参数,所以我建议这样写:
CREATE VIEW `view` AS
SELECT a.id, COALESCE(b.name, c.name, a.name) AS name
FROM a_table a LEFT JOIN
b_table b
ON a.b_id = b.id LEFT JOIN
c_table c
ON a.c_id = c.id;
视图不是“更新”。它们是当视图是引用时插入到查询中的SQL代码。数据来自基础表。
我删除了不兼容的数据库标记。反引号建议您使用MySQL。 –