SQL QUERY Problem with providing result

This is my SQL query:

select name,description from wp_widget_custom where name in ('hemel-hempstead','maidenhead', 'guildford','bromley','east-london','hertfordshire','billericay','surrey') 

The result that I get is in this form:

 name description hemel-hempstead Loreum ipsim east-london Loreum ipsim bromley Loreum ipsim BROMLEY billericay Loreum ipsim maidenhead Loreum ipsim maidenhead hertfordshire Loreum ipsim HERTFORDSHIRE guildford loreum ipsum Guildford surrey loreum ipsum surrey 

I want the result to be ordered as it was passed in the query:

 hemel-hempstead ,maidenhead',guildford,bromley,east-london...... 

Help evaluate, thanks.

+6
source share
2 answers

field order:

 select name, description from wp_widget_custom where name in ('hemel-hempstead','maidenhead','guildford','bromley','east-london','hertfordshire','billericay','surrey') order by field(name, 'hemel-hempstead','maidenhead','guildford','bromley','east-london','hertfordshire','billericay','surrey') 
+6
source

You can use inner join filtering instead of where ... in clause. This allows you to specify an order, which can then be specified in the order by clause:

 select wc.name , wc.description from wp_widget_custom wc join ( select 1 as nr, 'hemel-hempstead' as name union all select 2, 'maidenhead' union all select 3, 'guildford' union all select 4, 'bromley' union all select 5, 'east-london' union all select 6, 'hertfordshire' union all select 7, 'billericay' union all select 8, 'surrey' ) as filter on filter.name = wc.name order by filter.nr 
+1
source

Source: https://habr.com/ru/post/918505/


All Articles