#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. Это действительно помогает. Большое вам спасибо