mysql查询获取预览数据

时间:2017-01-02 08:33:20

标签: php sql wordpress preview

我有一张表,其中我有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

通过此查询我们得到了以下数据

enter

上表中的

id 1303应该在145之后出现

2 个答案:

答案 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我假设的是你的数据结构。