2
所以,我想創建一個按照流行度排序的公式,但我不想創建一個存儲過程或函數。我想這個函數只是在我的查詢中。MySQL:我如何使用ORDER BY進行內聯函數?
那麼,有沒有辦法做到像
SELECT cols
FROM tables
WHERE conditions
ORDER BY function(){ logic using cols } DESC LIMIT 10
或類似的東西?
所以,我想創建一個按照流行度排序的公式,但我不想創建一個存儲過程或函數。我想這個函數只是在我的查詢中。MySQL:我如何使用ORDER BY進行內聯函數?
那麼,有沒有辦法做到像
SELECT cols
FROM tables
WHERE conditions
ORDER BY function(){ logic using cols } DESC LIMIT 10
或類似的東西?
我不想創建一個存儲過程或函數
你要調用一個函數,但你不希望定義一個函數?好吧...
可以在ORDER使用表達式BY子句,包括CASE
這是非常強大:
SELECT cols
FROM tables
WHERE conditions
ORDER BY CASE WHEN col1 BETWEEN a AND b THEN 1
WHEN col1 BETWEEN c AND d THEN 2
...
END
DESC LIMIT 10
但它往往更容易做的,在你的選擇列表中的計算,然後順序計算列:
SELECT cols, POW(col1, col2) AS calc1
FROM tables
WHERE conditions
ORDER BY calc1 DESC LIMIT 10
是什麼邏輯是什麼樣子? – NullUserException 2010-08-27 16:32:01
人氣如何確定? – Bernard 2010-08-27 16:35:05
還沒有想出來。但它會在三個不同的列上進行數學運算。 – NullVoxPopuli 2010-08-27 17:39:12