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