当前位置: 首页 > 面试题库 >

MySQL按列表排序

姚洲
2023-03-14
问题内容

我有一个数字列表:(7,1,3,2,123,55这是现有记录的ID)

我有一个带有列id和的mysql表name,其中id是整数主键。我想从该表中选择的记录,但在一个特定的顺序,例如713212355

  • 是否可以在MyISAM的查询中执行此操作,而无需任何后处理?
  • 最简单的方法是什么?

问题答案:

由于1 < 3 < 77 < 123,一个简单ORDER BY id就足够了。

但是,如果您要这样订购:77, 3, 123, 1,则可以使用function
FIELD()

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

如果查询匹配的行多于您列出的行FIELD

FIELD返回0时,行不匹配任何您列表中的ID,比上市的IDS返回的数字越小,即一些。这意味着,如果查询匹配的行多于列出的行,则这些行将首先显示。例如:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

在此示例中,具有ID的400行将首先显示。如果您希望这些行显示在最后,只需反转ID列表并添加DESC

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC


 类似资料:
  • 问题内容: 我有一个像下面的表格 我需要先获得特色产品,然后再选择优先级为p1,p2和p3的产品 我写了一个查询,在下面是行不通的。 你能在那发现错误吗 问题答案: 试试这个 如果您在mysql枚举上使用ORDER BY,则不会按字母顺序对其进行排序,而是会按其在枚举中的位置对其进行排序。 如果要按照描述的字母顺序排序,请将枚举名称转换为这样的字符串

  • 问题内容: 如何按降序对列表进行排序? 问题答案: 在一行中,使用: 将函数传递给:

  • 问题内容: 我将要有一个固定的项目清单,直到有一个随机化步骤,我才能运行查询直到执行该查询为止。 我想要以下内容: 假设is_launch_set将返回1,3,7,11,但已被随机分配到以下位置: 关于如何实现这一目标的任何想法?我在想也许是一个find_in_set,但不是很确定。 问题答案: 您可以使用以下任一方法来做到这一点: 要么 要么

  • 问题内容: Python中有什么方法可以按频率对列表进行排序? 例如, 上面的列表将按照其值的频率顺序进行排序,以创建以下列表,其中频率最高的项目位于最前面: 问题答案: 我认为这对于A来说将是一项好工作: 或者,您可以写第二行而不使用lambda: 如果您有多个具有相同频率的元素 并且 您希望这些元素保持分组状态,那么我们可以通过更改排序键以不仅包括计数,还包括 值 来做到这一点:

  • 我开始在我的项目中使用primefaces,我马上就遇到了问题。我有一个列表,其中包含一些我用实体管理器从数据库中获取的东西,我在primefaces数据表的视图中显示了它。在我的后台bean中,我有:List getList(),在这里我使用实体管理器从数据库中检索记录,并立即返回。。 和myService: 我的豆子: 视图: 这种方式primefaces排序不起作用,我在堆栈上的某个地方读到

  • 问题内容: 好的,所以我试图在多列中进行全文搜索,就像这样简单: 现在,我想按相关性排序(找到了多少个单词?),我已经可以使用以下方式进行处理: 现在这是我迷路的部分,我想在此列中优先考虑相关性。 我想我可以创建两个相关性列,一个用于,一个用于,但是到那时我将在表中进行三遍相同的搜索,而对于我正在执行的此功能,性能非常重要,因为查询将被联接并与其他表匹配。 因此,我的主要问题是 ,是否有更快的方法