Mysql 按组选择-按值内部排序

Mysql 按组选择-按值内部排序,mysql,Mysql,我想要这样的东西: $st = $db->query("select * from posts where position = 'slider' order by inde asc"); SELECT p.* FROM posts p WHERE p.position IN ('slider','right','below') ORDER BY p.position DESC , p.inde ASC 加上 加上 因此,应该使用这个位

我想要这样的东西:

$st = $db->query("select * from posts where position = 'slider' order by inde asc");
  SELECT p.*
    FROM posts p
   WHERE p.position IN ('slider','right','below')
   ORDER
      BY p.position DESC
       , p.inde ASC
加上

加上

因此,应该使用这个位置顺序(右下方的滑块)选择行,但其内部的每个组都应该按inde排序

有什么帮助吗?

使用
按字段排序()
FIELD()
返回值在给定值列表中的位置

SELECT *
FROM posts
WHERE position IN ('slider', 'right', 'below')
ORDER BY FIELD(position, 'slider', 'right', 'below'), inde
使用
按字段排序()
FIELD()
返回值在给定值列表中的位置

SELECT *
FROM posts
WHERE position IN ('slider', 'right', 'below')
ORDER BY FIELD(position, 'slider', 'right', 'below'), inde

最简单的解决方案是这样的查询:

$st = $db->query("select * from posts where position = 'slider' order by inde asc");
  SELECT p.*
    FROM posts p
   WHERE p.position IN ('slider','right','below')
   ORDER
      BY p.position DESC
       , p.inde ASC
(我们注意到,
位置
值的顺序可以基于字符串值……我们知道,
's'>'r'>'b'

如果我们需要不同顺序的值,我们可以使用表达式将位置值解码为可以按顺序排序的值。(我们可以使用几种可能的模式和各种各样的表达式。)


如果要求运行三个单独的查询(出于性能原因?),类似这样的操作也会返回指定的结果:

   ( SELECT p.* FROM posts p WHERE p.position = 'slider' ORDER BY p.inde )
   UNION ALL
   ( SELECT p.* FROM posts p WHERE p.position = 'right'  ORDER BY p.inde )
   UNION ALL
   ( SELECT p.* FROM posts p WHERE p.position = 'below'  ORDER BY p.inde )

(如果我们想更明确地表达对结果排序的要求,MySQL还允许我们在最后一个paren之后添加ORDER BY,对整个集合进行排序。)

最简单的解决方案是这样的查询:

$st = $db->query("select * from posts where position = 'slider' order by inde asc");
  SELECT p.*
    FROM posts p
   WHERE p.position IN ('slider','right','below')
   ORDER
      BY p.position DESC
       , p.inde ASC
(我们注意到,
位置
值的顺序可以基于字符串值……我们知道,
's'>'r'>'b'

如果我们需要不同顺序的值,我们可以使用表达式将位置值解码为可以按顺序排序的值。(我们可以使用几种可能的模式和各种各样的表达式。)


如果要求运行三个单独的查询(出于性能原因?),类似这样的操作也会返回指定的结果:

   ( SELECT p.* FROM posts p WHERE p.position = 'slider' ORDER BY p.inde )
   UNION ALL
   ( SELECT p.* FROM posts p WHERE p.position = 'right'  ORDER BY p.inde )
   UNION ALL
   ( SELECT p.* FROM posts p WHERE p.position = 'below'  ORDER BY p.inde )

(如果我们想更明确地表达对结果排序的要求,MySQL还允许我们在最后一个paren之后添加orderby,对整个集合进行排序。)

真正易于使用的唯一缺点是,
按字段排序
永远无法使用索引还有其他方法可以使用索引,但我认为它们中没有任何一种会使用索引。真正易于使用的唯一缺点是,
按字段排序
永远无法使用索引有其他方法可以使用索引,但我认为它们中没有任何一种会使用索引.