В MySQL, как вы используете между столбцами «как» - PullRequest
0 голосов
/ 08 февраля 2012

Part1.Как искать значения в двух разных столбцах «AS»

Part2.Как мне перечислить 5 лучших ближайших значений к 98?

Пример запроса:

select 
  TITLE.name, 
  (TITLE.value-TITLE.msp) AS Lower, 
  (TITLE.value+TITLE.msp) AS Upper 
FROM TITLE 
WHERE 98 BETWEEN Lower AND Upper;

1 Ответ

3 голосов
/ 08 февраля 2012

Для части 1) вам нужно использовать вложенный выбор, поскольку вы не можете использовать переименованные проекции (SELECT часть) в качестве предикатов (WHERE часть) в той же подвыборке.

Для части 2), используйте ORDER BY .. LIMIT, чтобы получить верхнюю 5. Порядок наименьшей абсолютной разницы до 98

SELECT t.* FROM (
  SELECT
    TITLE.name, 
    (TITLE.value-TITLE.msp) AS Lower, 
    (TITLE.value+TITLE.msp) AS Upper,
    (TITLE.value) AS Value
  FROM TITLE 
) t
WHERE 98 BETWEEN t.Lower AND t.Upper
ORDER BY ABS(98 - t.Value) ASC
LIMIT 5
...