2017-01-02 8 views
0

У меня есть одна таблица, в которой у меня есть id и parent_id. В панели администратора, если пользователь нажимает кнопку предварительного просмотра, он перенаправляет на сайт с идентификатором предварительного просмотра. когда мы нажимаем кнопку предварительного просмотра, сохраняем данные в таблице с его идентификатором в ключе «parent_id».mysql запрос для получения данных предварительного просмотра

Я создал запрос и его работу отлично, но он отображает данные в порядке, но я хочу заменить родительскую строку на строку предварительного просмотра.

select * from wp_content 
where page='sharepoint_features' 
and (status='1' or (status='preview' and parent_id='146')) 
and id<>146 

здесь 146 является родительским идентификатор, который мы получили форму предварительного идентификатор

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

enter

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

+0

Проверьте новую пробу –

ответ

1

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

UPDATE

Дорогой, это SqlFiddle, так что если я понимаю ваш запрос, результат это нормально.

Мой результат:

144 - a - null 
145 - b - null 
1303 - c - 146 
147 - d - null 

UPDATE 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 
+0

получая тот же результат Джо – vishal

+0

я примерить sqlfiddle и буду обновлять мой ответ –

+0

колонка parent_id является типом VARCHAR, поэтому я использовал заказ на COALESCE (произнесения ('parent_id', как INT), идентификатор), но по-прежнему получает тот же – vishal

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 с тем, что я предполагаю, является вашей структурой данных.

+0

благодарит @CUGreen, но не работает. parent_id - varchar, поэтому поле будет пустым или пустым. – vishal

+0

@vishal, опять же, вы проверили ссылку на скрипт sql, который я обновил? Он имеет parent_id как varchar. Должны ли мы тогда предположить, что это ваша версия mysql, вызывающая проблемы здесь? – CUGreen

+0

да у меня есть mysql версия 5.0.12. Версия выпущена.Но я хочу запустить этот запрос в своей версии – vishal

 Смежные вопросы

  • Нет связанных вопросов^_^