mysql найти ближайший список чисел в нескольких столбцах - PullRequest
0 голосов
/ 15 марта 2020

вот таблица и значения

ID  c1  c2  c3  c4  c5
______________________

1   60  11  29  50  90
2   59  12  32  51  81
3   61  16  30  53  92
4   66  13  34  55  91
5   57  14  28  49  73

, а это список чисел [59,13,33,56,94] (я имею в виду 59 для c1, 13 для c2 и ..)

теперь, как выбрать 3 самых близких базы записей в списке

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Я подозреваю, что вы можете иметь в виду самое близкое под евклидовым расстоянием.

Идея order by и limit:

select t.*
from t
order by pow(c1 - 59, 2) + pow(c2 - 13, 2) + pow(c3 - 33, 2) +
         pow(c4 - 56, 2) + pow(c5 - 94, 2)
limit 3;
0 голосов
/ 15 марта 2020

Вы можете использовать:

SELECT *, ABS(c1-a1) + ABS(c2-a2) + ABS(c3-a3) + ABS(c4 - a4) + ABS(c5-a5) AS total
FROM tab
CROSS JOIN (SELECT 59 a1,13 a2,33 a3,56 a4,94 a5) l
ORDER BY total LIMIT 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...