Re: Column headings in csv

Richard Yates <[email protected]> Sat, 23 May 2020 06:49:10 -0700
Newsgroups comp.databases.mysql
Organization A noiseless patient Spider
Message-ID <[email protected]>
On Sat, 23 May 2020 10:13:00 +0200, Luuk <[email protected]> wrote:

>On 23-5-2020 01:47, Richard Yates wrote:
>> On Sun, 02 Feb 2020 13:57:48 +0100, Kees Nuyt <[email protected]>
>> wrote:
>> 
>
>>> Yeah, you can only ORDER the result of the UNION, not on of its
>>> parts.
>> 
>> Actually you can if you order each part and then set a limit. Recently
>> I found this out and am using this (in a php application).
>> 
>> (Distribution sites are each assigned to one of several districts. The
>> query pulls out the ones from one of the districts to list first at
>> the top of a dropdown menu, and then lists the remaining ones.)
>> 
>> $distsitesq="
>> (select distsite, name from distsites
>> where ID_district=$ID_district
>> order by name limit 999) union
>> (select distsite, name from distsites
>> where ID_district<>$ID_district
>> order by name limit 999)";
>> 
>> 999 is chosen because in this example it is far larger than the
>> distsites table will ever be. Setting the limit enforces the ordering
>> of each part.
>> 
>This is not right, it might give look like the correct result, but it is 
>not guaranteed the correct result.

It does produce the correct result in my application. How would it not
produce that result? 

>The correct (SQL) way to do this is like this:
>
>select 1 as x,distsite, name from distsites
>  where ID_district=$ID_district
>  union
>  select 2 as x, distsite, name from distsites
>  where ID_district<>$ID_district
>order by x,name

Thank you for the suggestion. It makes sense and I will try it, also.