我有一张表,其中我有id和parent_id。在管理员面板中,如果用户单击预览按钮,则会重定向到具有预览ID的站点。当我们点击预览按钮时,数据会保存在表格中,并且其中的内容位于' parent_id'键。
我创建了查询并且工作正常,但它按顺序显示数据,但我想用预览行替换父行。
select * from wp_content
where page='sharepoint_features'
and (status='1' or (status='preview' and parent_id='146'))
and id<>146
这里146是我们得到表格预览ID
的父ID通过此查询我们得到了以下数据
上表中的id 1303应该在145之后出现
答案 0 :(得分:2)
您必须添加ORDER BY
子句,
试试这个:
select * from wp_content
where page='sharepoint_features'
and (status='1'
or (status='preview' and parent_id='146'))
and id<>146
order by coalesce(CAST(parent_id as INT), id)
<强>更新强>
亲爱的,这是SqlFiddle,所以如果我理解了您的请求,结果就可以了。
我的结果是:
144 - a - null
145 - b - null
1303 - c - 146
147 - d - null
更新2
尝试使用此查询并告诉它是否正常:
select * from wp_content
where page='sharepoint_features'
and (status='1'
or (status='preview' and parent_id='146'))
and id<>146
order by
case
when parent_id is null then id
else CONVERT(cast parent_id as INT)
end
答案 1 :(得分:0)
以下是基于@JoeTaras解决方案的可能解决方法:
select * from wp_content
where page='sharepoint_features'
and (status='1'
or (status='preview' and parent_id='146'))
and id<>146
order by coalesce(NULLIF(parent_id, ''), id)
Here is a sqlfiddle我假设的是你的数据结构。