mysql按多列排序,包括flag

时间:2013-09-27 07:00:02

标签: mysql

我可以使用SQL查询构建的帮助。这是我的情况:

我想按3列订购结果。情况就是这样。我有附加项目列表,需要在该列表中只选择一个,哪个依赖于其“重要性”。重要性由以下规则决定:

  • 如果某个项目的严重性更高,请选择
  • 如果严重程度相同,并且顶部标志位于某个项目上,则取一个
  • 如果严重性和顶部相同,请选择优先级更高的一个 (如果一切都相同,无论哪一个都无关紧要)

问题是top参数,因为它可以包含任何文本,并且规则应该是如果它是空的(''),null或者E(E as empty)标志没有设置并且只有sev和previous应该使用,如果任何其他值在top之内,那个标志是打开的,应该使用第二个规则。

我知道(那一栏)看起来很奇怪,但实际上我只是从外面获取价值并按原样处理它们 我不能使用ORDER BY severity,top,priority作为顶部DESC或ASC是错误的,所以我不知道如何继续。一些示例设置是sqlFiddle。 有任何想法吗? 提前帮助我。

1 个答案:

答案 0 :(得分:1)

ìmportance语句中添加计算SELECT列。请使用CASE,以便top为空时为null或“E”,importance为0.否则,importance为1。

然后ORDER BY severity,ìmportance,priority