Запросите название города с самой длинной и самой короткой длиной - PullRequest
0 голосов
/ 07 мая 2018

Я написал запрос, чтобы вернуть мне города с самой короткой и самой длинной строкой в ​​базе данных MS SQL SERVER.

Select city, len(city) as l 
From Station Where len(city) in 
((select max(len(city)) from station)
Union
(select min(len(city)) from station)) 
Order by l,city;

Моя проблема в том, что я получаю дубликаты, потому что у меня есть несколько городов, которые имеют самую длинную и самую короткую длину. Также, когда я пытаюсь ORDER BY CITY в обоих подзапросах, это терпит неудачу.

Какой совет?

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Другой способ:

select * from (
         select top 1 city, LEN(city) cityLength from station order by cityLength ASC,city ASC) Minimum
       UNION
       select * from (
       select top 1 city, LEN(city) cityLength from station order by cityLength desc, city ASC) Maximum
0 голосов
/ 12 июля 2018

Выберите Город, длина (Город) от Станции, где Город в (Выберите Город от Станции, где длина (Город) в (Выберите макс. (Длина (Город)) от Станции)) ИЛИ Город в (Выберите мин. (Город) от Станции где длина (город) в (Выберите мин. (длина (город)) от станции)) порядок по City asc;

0 голосов
/ 07 мая 2018

Я мог бы сделать:

select top (1) with ties city
from station
order by len(city) asc
union 
select top (1) with ties city
from station
order by len(city) desc;

Или:

select distinct city
from station
where len(city) = (select max(len(city)) from station) or
      len(city) = (select min(len(city)) from station);
...