Вложенные запросы MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, у меня возникла проблема с вложенными запросами в MySQL, а именно - есть у меня поле

phone

(номер) из таблицы

house_list

типа

INT(11)

, я захотел разделить его пополам , то есть из 220156 получить 220 и 156 , и проверить их равенство (220 != 156). Но сделать это в одном запросе не получается.

Не по теме:

A использовать CREATE VIEW каждый раз как то не хочется, желаю наконец разобраться с этой проблемой, которая меня уже довольно долго мучает

Я добился их разделения таким способом :
SELECT phone,SUBSTRING(phone,1,LENGTH(phone)/2) AS l,
SUBSTRING(phone,LENGTH(phone)/2+1,LENGTH(phone)/2) AS r
FROM house_list;
Это отлично работает но

так

:
SELECT phone,SUBSTRING(phone,1,LENGTH(phone)/2) AS l,
SUBSTRING(phone,LENGTH(phone)/2+1,LENGTH(phone)/2) AS r
FROM house_list WHERE l = r;

не работает

, прошу помочь мне , так как у меня есть пробелы в знаниях, а найти их самостоятельно я не могу. P.S. Прошу прощения за мой русский язык.

Решение задачи: «Вложенные запросы MySQL»

textual
Листинг программы
SELECT x.phone FROM (
  SELECT phone
  , SUBSTRING(phone,1,LENGTH(phone)/2) AS l
  , SUBSTRING(phone,LENGTH(phone)/2+1,LENGTH(phone)/2) AS r
  FROM house_list
) x 
WHERE 
  x.l = x.r;

Объяснение кода листинга программы

В этом коде используется подзапрос в SQL (MySQL), который выполняется в два этапа:

  1. Внутренний запрос (подзапрос):
    • Выбирает поле phone из таблицы house_list.
    • Разбивает это поле на две части: первую половину (левую) в переменную l и вторую половину (правую) в переменную r.
    • Результатом этого подзапроса является новая таблица, содержащая три столбца: phone, l и r.
  2. Внешний запрос:
    • Выбирает только столбец phone из результата внутреннего запроса.
    • Фильтрует результаты таким образом, чтобы остались только те строки, где значения в столбцах l и r совпадают.
    • Результатом этого запроса будет таблица, содержащая только столбец phone и строки, где значения в столбцах l и r совпадают. Таким образом, этот запрос вернет список номеров телефонов из таблицы house_list, где первая половина номера равна второй половине.

Оцени полезность:

10   голосов , оценка 3.9 из 5