目前,我有一個SQL查詢,看起來最多可以接受的比賽,然後用它們進行排序:我怎麼可以把一個函數ORDER內部。通過ABS(
ORDER BY ABS (itemranking - $rating)
是否有可能以某種方式修改「項排名「作爲查詢被處理,使得條件可以添加說像:
if (category == '$category')
減去1從物品的ABS;
THEN ORDER BY ABS
?
我不確定這是否是對知道正確代碼的人的快速回答,或者它是一個更大的概念「我怎樣才能達到這個結果」類型的問題。
無論哪種方式,有一些上下文可能會有幫助。我們的目標是對一系列提交內容進行排序,以便它們匹配值「評級」,同時還可以提升用戶所需類別中的項目。
一個真實生活的例子(不是我的網站):購物網站可以提供一個過濾器,用於在價格方面搜索最接近的匹配,但表現爲特定類別內的所有商品(例如「紅色」)的價格爲10美元比賽實際上是比賽。
我想我對PHP經常使用的函數之外的SQL不夠熟悉,無法理解到底發生了什麼。 因此,我添加一個特殊的情況下,似乎像一個if語句的功能。我想它是我失去的「其他」聲明。什麼時候「排名」被設置? – user187680 2012-08-12 02:17:28
@ user187680:我修改了一下查詢來簡化它。我在ORDER BY子句中使用的CASE語句只不過是一組IF語句,在這種情況下,這些語句依賴於每行(Category和ItemRanking)中的字段以及本地PHP變量$ category和$ rating。從這個CASE語句返回的值是一個可以比較容易排序的直線數字。 – 2012-08-12 02:30:10