Вложенные подзапросы к MySQL в 2 уровнях
Формулировка задачи:
Получаю список строк по условию:
Затем нужно этот список строк обработать через такой запрос, таблица test должна содержать полученные в первом запросе строки:
перебрал уже с десяток вариантов, никак не состыкую...
SELECT * FROM TABLE WHERE s=1 ORDER BY id
SELECT id FROM test t1 WHERE EXISTS (SELECT id FROM test t2 WHERE t2.id IN (t1.id + 10, t1.id - 10))
Решение задачи: «Вложенные подзапросы к MySQL в 2 уровнях»
textual
Листинг программы
SELECT CONCAT(a1.id,':(',a1.x,',',a1.y,')') v1, CONCAT(a2.id,':(',a2.x,',',a2.y,')') v2 FROM all_items_10x10 a1 JOIN all_items_10x10 a2 ON (a2.x=a1.x AND a2.y=a1.y+1 AND a2.s=0) WHERE a1.s = 0
Объяснение кода листинга программы
- В данном коде используется оператор SELECT для выбора данных из таблицы all_items_10x10.
- В выбранных полях указаны CONCAT(a1.id,':(',a1.x,',',a1.y,')') и CONCAT(a2.id,':(',a2.x,',',a2.y,')') - это функции CONCAT, которые объединяют значения полей id, x, y в одну строку с использованием разделителя ':('. Предполагается, что эти поля содержат числовые значения.
- Для соединения таблиц all_items_10x10 используется оператор JOIN с условием (a2.x=a1.x AND a2.y=a1.y+1 AND a2.s=0). Здесь мы соединяем таблицу all_items_10x10 по полю x и y с условием, что значение поля s у соединенной записи будет равно 0.
- В конце кода добавляется условие WHERE a1.s = 0, которое ограничивает выборку только теми записями, у которых значение поля s равно 0.
- В результате выполнения данного кода будет получена выборка из таблицы all_items_10x10, содержащая только два поля: v1 и v2, которые представляют собой строки, сформированные с использованием функций CONCAT.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д