SQLite 最大匹配行与值的多列

SQLite Maximum matching row by multi column with value

测试table

ID  a   b   c   d   e   (f to z)
--------------------------------
0   2   7   9   0   8   ...
1   4   5   6   3   0   ... 
2   1   5   6   2   9   ...
3   1   0   8   2   3   ...
4   2   1   6   9   5   ...
5   1   5   6   2   3   ...
6   2   3   4   1   0   ...

我想找到与我的查询匹配最多列的行。我现在拥有的是

select ID from test where a = 1, b = 5, c = 6, d = 2, e = 3, ... (same with f to z)

上面示例的期望输出是:5, 2, 3, 1, 4

如何编写这样的查询?

要在多个列中找到最接近的匹配项,最简单的方法可能是计算列匹配项的数量并按其降序排列。

SELECT ID
FROM myTable
ORDER BY 
  CASE WHEN a = 1 THEN 1 ELSE 0 END +
  CASE WHEN b = 5 THEN 1 ELSE 0 END +
  CASE WHEN c = 6 THEN 1 ELSE 0 END +
  CASE WHEN d = 2 THEN 1 ELSE 0 END +
  CASE WHEN e = 3 THEN 1 ELSE 0 END DESC;

# ID: 5 2 3 1 4 0 6

An SQLfiddle to test with.