Reputation: 3
I want to append result of 2 queries. For example:
ResultOfQuery_1
ResultOfQuery_2
My query is :
SELECT Id FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString glob '[A-Z]*'
UNION
SELECT FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString NOT glob '[A-Z]*' ORDER BY FName DESC
As an output of this query both results are mixing. I want them one after other.
Can anyone help me get the result I want?
Upvotes: 0
Views: 72
Reputation: 1270391
Just use a single query:
SELECT Id FName,SortString
FROM CTable
WHERE 1 = DevId
ORDER BY (SortString glob '[A-Z]*') DESC, FNAME DESC ;
If DevId
is a number, then do not use single quotes around the comparison. I removed the single quotes, assuming that it is a number.
Upvotes: 0
Reputation: 318
In your case Order by is applying to whole query. If we could use brackets it wold be like
(
SELECT Id FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString glob '[A-Z]*'
UNION
SELECT FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString NOT glob '[A-Z]*'
)
ORDER BY FName DESC
You might use some ordering field
SELECT Id, FName,SortString, 1 as OrderStr
FROM CTable
WHERE '1' = DevId AND SortString glob '[A-Z]*'
UNION
SELECT Id, FName,SortString, 2 as OrderStr
FROM CTable
WHERE '1' = DevId AND SortString NOT glob '[A-Z]*'
ORDER BY OrderStr, FName DESC
Or maybe sub-queries
SELECT *
FROM(
SELECT Id, FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString glob '[A-Z]*'
ORDER BY FName DESC
) T1
UNION
SELECT *
FROM(
SELECT Id, FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString NOT glob '[A-Z]*'
ORDER BY FName DESC
) T2
Upvotes: 1
Reputation: 77896
Then do a JOIN
on sortstring
column instead of UNION
like
select xx.Id, xx.FName as xxFName,
xx.SortString as xxSortString,
xxx.fname, xxx.SortString
from (
SELECT Id FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString glob '[A-Z]*' ) xx
join (
SELECT FName,SortString
FROM CTable
WHERE '1' = DevId AND SortString NOT glob '[A-Z]*' ) xxx
on xx.sortstring = xxx.sortstring
ORDER BY xx.FName DESC;
Upvotes: 0