簡體   English   中英

基於SQL查詢的訂單結果

[英]Order results based on SQL query

我目前在表中查詢具有特定category項目。 我已將此查詢擴展為也可以在項目description列中查找。 我的問題是,如何排序結果,以便category匹配為第一,描述為最后?

`SELECT * FROM myTable WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%'

在我上面的查詢中,僅添加ORDER BY category不夠的。 我能想到的唯一方法是兩個單獨的查詢以及兩個單獨的結果變量。

我正在使用phpmysqli

可以這樣做

SELECT *
FROM myTable
WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%'
ORDER BY
    CASE
      WHEN `category` LIKE '%keyword%' THEN 1
      WHEN `description` LIKE '%keyword%' THEN 0
END 

可以這樣做

SELECT *
FROM myTable
WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%'
ORDER BY
    CASE
      WHEN `category` LIKE '%keyword%' THEN 1
      ELSE 0
    END CASE
      DESC

如果您想擴展該SQL查詢並保留這些順序,則可以利用:

SELECT *
FROM myTable
WHERE `category` LIKE '%keyword%' || `description` LIKE '%keyword%'
ORDER BY
    CASE
      WHEN `category` LIKE '%keyword%' THEN 1
      ELSE 0
    END CASE
      DESC,
    CASE
      WHEN `description` LIKE '%keyword%' THEN 1
      ELSE 0
    END CASE
      DESC

結果(既是description結果又是category結果)將在開始時顯示-我想這是未指定的, 因此是請求或接受的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM