我想让我的网站内容可编辑,但编辑的项目只有编辑器可见,直到编辑得到主持人的验证。我将新编辑保存到另一个表现在问题是我想从默认表中选择所有项目,但是如果对项目进行编辑则从该表中获取它而不是默认表格
select * from (
select * from items where name = @name and
name not in (select name from edits where name = @name and ip = @ip)
union
select * from edits where name = @name) tmp order by name
问题是用户可能无法编辑所有字段,我必须从默认表中填写这些空(或空)列
编辑:换句话说,我想从默认表中选择,但如果编辑器IP与当前用户匹配,则替换所有已编辑项目的已编辑字段
任何想法?
答案 0 :(得分:1)
假设表格的结构如下:
edits (col1, col2, col3, col4)
items (col1, col2, col3)
您可以使用此代码:
select
COALESCE(b.col1,a.col1) col1
,COALESCE(b.col2,a.col2) col2
,COALESCE(b.col3,a.col3) col3
,col4 col4
from
edits a
full outer join
items b
on a.name = b.name
where a.name = @name
AND ISNULL(@ip,b.ip) = b.ip
我希望这会对你有所帮助
答案 1 :(得分:0)
外连接表并替换编辑中存在NULL的列的项目中的值:
select isnull(i.col1, e.col1) as col1, etc
from items i
left outer join edits e
on i.name = e.name