MySQL запрос, чтобы получить предварительный просмотр данных

У меня есть одна таблица, в которой у меня есть id и parent_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 — родительский идентификатор, который мы получили для предварительного просмотра формы

по этому запросу мы получили следующие данные

войти

в приведенной выше таблице идентификатор 1303 должен следовать после 145

0

Решение

Вы должны добавить 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

Другие решения

Вот возможное решение, основанное на решении @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)

Вот sqlfiddle с тем, что я предполагаю, это ваша структура данных.

0

По вопросам рекламы [email protected]