Ответ Will также может быть записан как:
WHERE ( SUM( column0 < value0 )
+ SUM( column1 < value1 )
... +
+ SUM( column19 < value19 )
) >= 15
Вышеуказанное будет работать только в MYSQL , но не в других базах данных.Итак, я полагаю, что лучше использовать стандарт CASE WHEN
, чем этот.
Другой способ обработки такого запроса будет выглядеть так (id
является первичным ключом таблицы):
SELECT *
FROM yourTable
JOIN
( SELECT id
FROM yourTable
WHERE column0 < value0
UNION ALL
SELECT id
FROM yourTable
WHERE column1 < value1
UNION ALL
...
UNION ALL
SELECT id
FROM yourTable
WHERE column19 < value19
GROUP BY id
HAVING COUNT(*) >=15
) AS chk
ON chk.id = yourTable.id
Если имеется 20 индексов (по одному на каждые column0
, column1
, ..., column19
), это может быть быстрее.