我的MySql数据库中有一个表,其中包含以下列:
- id
- parent_id
- visible
基本上,如果我有一个表填充如下:
id name parent_id visible
------ --------- -------------- -------
1 Admin 0 1
2 Review 0 0
3 Archive 2 1
4 Support 0 1
虽然层次结构是......
1 - Admin 2 - Review 3 - Archive 4 - Support
我希望Archive(3)基本上从它的父行继承'visible'属性 - Review(2)。我想在视图中返回此内容:
id name parent_id visible
------ --------- -------------- -------
1 Admin 0 1
2 Review 0 0
3 Archive 2 0
4 Support 0 1
有没有人知道在不使用存储过程的情况下MySql中是否可以这样做?
谢谢!
答案 0 :(得分:0)
您可以使用可见列的CASE语句在正常查询中执行此操作:
select a.id, a.name, a.parent_id,
CASE WHEN a.parent_id = 0
then a.visible
else b.visible
end as visible
from myTable a
left join myTable b on a.parent_id = b.id
您还可以创建视图(相同代码):
create view myTableView as
select a.id, a.name, a.parent_id,
CASE WHEN a.parent_id = 0
then a.visible
else b.visible
end as visible
from myTable a
left join myTable b on a.parent_id = b.id