id|pnumber|special|limitedtime|normal
1 |765234 |1 |0 |0
2 |765235 |0 |1 |0
3 |776234 |0 |0 |1
4 |776235 |1 |0 |0
5 |785456 |0 |1 |0
6 |785457 |1 |0 |0
這是另一個我以前發佈的問題的場景。MySQL - PERL - 按多列排序,然後按列零件編號字段排序
請注意,我實際上是使用DBI和佔位符,但只使用基本的我的問題。
而不是三個查詢:
SELECT `pnumber` from `table`
WHERE `special` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2
執行和顯示
SELECT `pnumber` from `table`
WHERE `limitedtime` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2
執行和顯示
SELECT `pnumber` from `table`
WHERE `normal` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2
執行和顯示
這給我的結果,但是, LIMIT需要與所有三個/依賴關係綁定。
所以,我想要做的事,如:
SELECT `pnumber` from `table`
ORDER BY special?? ABS(pnumber) DESC,
ORDER BY limitedtime?? ABS(pnumber) DESC,
ORDER BY normal?? ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2
其中,我認爲,如果做得正確,將會給我,我在我想要的順序結果。
765234 (special)
776235 (special)
785457 (special)
765235 (limitedtime)
785456 (limitedtime)
776234 (normal)
我使用LIMIT $ Lvar1,$ Lvar2爲分頁/導航。
(該表有更多的數據結果真的被壓入的陣列,因爲有一些交叉引用/查詢到後來其他表回事下來的代碼。)
肯定是一個大問題,其中有人可能在這裏簡單回答你'去!
感謝您幫助這個菜鳥大家。
我會盡力回覆你。看起來有希望我會在UNION ALL上做一些閱讀。謝謝你指點我。如果這對我有用,我會選擇你的答案。 – Stephie 2011-02-17 14:56:58
@Dodger指出了一個重要的問題,where子句需要> 0而不是> 1。 – 2011-02-17 19:26:52