Задать вопрос
swanrnd
@swanrnd
Издатель HTML5 игр

Как в SQL найти похожую строку?

Есть такая таблица:
id param1 param2 param3....
1 1 1 1
2 1 1 1
3 1 1 1
4 2 1 1
5 2 1 1

Нужно по id=1 вернуть следующую строку id=2,3
по id=4 вернуть строку id=5.
Можно конечно сохранить все парам в массив и сделать так:
SELECT param1, param2, param3 FROM table WHERE id=1;
SELECT * FROM table WHERE param1=@param1 and param2=@param2 and param3=@param3;


Но есть ли более изящное решение?
  • Вопрос задан
  • 895 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
evgeniy2194
@evgeniy2194
PHP, js developer
Можно попробовать join таблицу саму на себя и сравнить CONCAT.
SELECT * FROM table as a JOIN table as b ON CONCAT( 'a.param1', 'a.param2', 'a.param3') = CONCAT( 'b.param1', 'b.param2', 'b.param3') WHERE a.id = '1';

Не проверял но логика понятна

Или же:
SELECT * FROM table as a JOIN table as b ON a.param1 = b.param1  AND a.param2 = b.param2  AND a.param3 = b.param3 WHERE a.id = '1';
Ответ написан
wladyspb
@wladyspb
Программист
SELECT * FROM table WHERE param1 = (SELECT param1 FROM table WHERE id=1) AND param2 = () ....
Тоже не самое изящное решение, правда)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
26 дек. 2024, в 23:03
500 руб./в час
26 дек. 2024, в 21:50
5000 руб./за проект
26 дек. 2024, в 21:01
10000 руб./за проект