如何在mysql中使用变量列创建视图

时间:2012-11-12 09:35:11

标签: mysql sql view

我的表tbl_settings总是只有一条记录。并且其中包含一个字段show_messages_in_log。另一个table tbl_logs存储所有日志。当然,tbl_logs有一个消息字段。

我需要一个显示日志的视图:

  • 如果tbl_settings.show_messages_in_log为真,请显示tbl_logs.message
  • 如果tbl_settings.show_messages_in_log为false,则不显示tbl_logs.message

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

你做不到。在关系数据库中,关系(表,视图)总是必须有固定数量的列。

您唯一能做的就是始终拥有该列,但在视图中将其显示为NULL。为此,您需要加入两个表并在视图中使用case表达式:

case 
   when show_messages_in_log = 'true' then tbl_logs.message
   else null
end as message

答案 1 :(得分:1)

也许只是加入表格,就像这样

create table tbl_settings 
(show_messages_in_log boolean);

create table tbl_logs
(message varchar(200));

insert into tbl_logs
values ('msg1'), ('msg2');

insert into tbl_settings 
values (true);

select tbl_logs.message
from tbl_logs inner join tbl_settings on tbl_settings.show_messages_in_log = TRUE

这将返回所有行。

update tbl_settings set show_messages_in_log = false;

select tbl_logs.message
from tbl_logs inner join tbl_settings on tbl_settings.show_messages_in_log = TRUE

这将不会返回任何行。

答案 2 :(得分:0)

IF tbl_settings.show_messages_in_log = TRUE THEN tbl_logs.message
ELSE NULL
END IF