我有一个表[Table]
3列[Column1]
,[Column2]
和[Column3]
。计算多少列匹配条件
我的条件是:
WHERE [Column1] LIKE '%q%' OR [Column2] LIKE '%q%' OR [Column3] LIKE '%q%'
它的工作原理,但我想通过比赛的数量结果进行排序。
例如
C1 - C2 - C3
q - q - q
q - a - q
q - a - a
我有一个表[Table]
3列[Column1]
,[Column2]
和[Column3]
。计算多少列匹配条件
我的条件是:
WHERE [Column1] LIKE '%q%' OR [Column2] LIKE '%q%' OR [Column3] LIKE '%q%'
它的工作原理,但我想通过比赛的数量结果进行排序。
例如
C1 - C2 - C3
q - q - q
q - a - q
q - a - a
尝试在查询此ORDER BY
条款:
ORDER BY (CASE WHEN [Column1] LIKE '%q%' THEN 1 ELSE 0 END +
CASE WHEN [Column2] LIKE '%q%' THEN 1 ELSE 0 END +
CASE WHEN [Column3] LIKE '%q%' THEN 1 ELSE 0 END) DESC
你或许应该第四列,类似添加到此:
SELECT [Col1],[Col2],[Col3],
CAST([Col1] LIKE '%q%' AS SMALLINT) + CAST([Col2] LIKE '%q%' AS SMALLINT) +
CAST([Col3] LIKE '%q%' AS SMALLINT) AS Strength
....
ORDER BY Strength
因为我不不知道您使用的是哪个数据库,您可能需要查阅文档以了解如何使用st从一个布尔值到一个整数。
伊泰
SELECT [Column1], [Column2], [Column3] FROM [Table]
WHERE [Column1] LIKE '%q%' OR [Column2] LIKE '%q%' OR [Column3] LIKE '%q%'
ORDER BY
(CASE WHEN [Column1] LIKE '%q%' THEN 1 ELSE 0 END) +
(CASE WHEN [Column2] LIKE '%q%' THEN 1 ELSE 0 END) +
(CASE WHEN [Column3] LIKE '%q%' THEN 1 ELSE 0 END)
DESC
你的意思是你想匹配的列数订购? –