我有一個表[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
你的意思是你想匹配的列數訂購? –