根据搜索结果过滤特定的列



我有一个从我的SQL Server数据库中填充的搜索栏和HTML表。每当我搜索时,它都会在SKUSKU Description上使用LIKE命令来过滤表。显示结果时,我希望它根据与SKU列的匹配最匹配的结果。

例如,如果我搜索"100",它将显示位于SKUSKU Description列中的结果。但是,我希望它过滤,以使SKU列中匹配的值首先在SKU Description列中匹配的值之前首先看到。

我认为这只是在查询中添加一些东西的问题,但是我该怎么做?

这是我的查询:

$query = "SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group]
          FROM vProducts
          WHERE CONCAT(SKU, [SKU Description])
          LIKE '%".$valueToSearch."%'";

这可能是过分的,您必须将其格式化为" $ QUERY"。这是SQL。

SELECT A.Product_ID, A.[Major Category], A.[Minor Category], A.[Product Report Code], A.SKU, A.[SKU Description], A.[SKU Status], A.Date, A.Group_ID, A.[SKU Group], A.Sort
FROM (
        SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group], 1 AS Sort
        FROM vProducts
        WHERE SKU LIKE '%' + @value + '%'
        UNION all
        SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group], 2 AS Sort
        FROM vProducts
        WHERE [SKU Description] LIKE '%' + @value + '%'
    ) A
ORDER BY A.Sort

最新更新