В MySQL как проверить, находится ли число между диапазоном чисел из ряда диапазонов

#mysql

Вопрос:

Я хотел бы знать, есть ли у нас запрос MySQL, чтобы проверить, существует ли число между диапазоном чисел.

У меня есть две таблицы

ID Число
1 192056
2 143067
ID начальный диапазон конечный диапазон
1 192000 192100
1 182000 182100
2 163000 163100
2 152000 152100

Мне нужно объединить эти две таблицы по идентификатору столбца и проверить, находится ли число из 1-й таблицы между диапазоном из 2-й таблицы.

Вывод:

192056 — true

143067 — false

Спасибо!

Комментарии:

1. С чем, в частности, у вас возникли проблемы? Это помогло бы увидеть, что вы пробовали или как далеко вы продвинулись, и как выглядят ваши желаемые результаты

Ответ №1:

Вы можете попробовать использовать LEFT JOIN и поставить ON условие с >= <= помощью оператора and . Вот пример:

 CREATE TABLE tableA (
ID INT,
Numbers INT);

INSERT INTO tableA VALUES
(1,192056),
(2,143067);

CREATE TABLE tableB (
ID INT,
start_Range INT,
end_Range INT);

INSERT INTO tableB VALUES
(1,192000,192100),
(1,182000,182100),
(2,163000,163100),
(2,152000,152100);

SELECT * FROM 
  tableA a
LEFT JOIN tableB b 
ON a.Numbers >= b.start_Range 
AND a.Numbers <= b.end_Range;
 

Что касается указания, вы можете определить его с помощью CASE выражения:

 SELECT a.Numbers, 
       CASE WHEN b.ID IS NULL THEN 'False' ELSE 'True' END AS 'Checking' 
FROM 
  tableA a
LEFT JOIN tableB b 
ON a.Numbers >= b.start_Range 
AND a.Numbers <= b.end_Range
 

Демонстрационная скрипка

Комментарии:

1. Это действительно помогает. Большое вам спасибо