相关疑难解决方法(0)

按SQL IN()子句中的值顺序排序

我想知道是否存在(可能更好的方式)按IN()子句中的值的顺序排序.

问题是我有2个查询,一个获取所有ID,第二个查询所有信息.第一个创建我想要第二个订购的ID的顺序.ID以正确的顺序放入IN()子句中.

所以它就像(非常简化):

SELECT id FROM table1 WHERE ... ORDER BY display_order, name

SELECT name, description, ... WHERE id IN ([id's from first])
Run Code Online (Sandbox Code Playgroud)

问题是第二个查询不会按照将ID放入IN()子句的顺序返回结果.

我发现的一个解决方案是将所有ID放入具有自动递增字段的临时表中,然后将该字段连接到第二个查询中.

有更好的选择吗?

注意:由于第一个查询是"由用户"运行而第二个查询是在后台进程中运行,因此无法使用子查询将2到1的查询组合在一起.

我正在使用MySQL,但我认为让它注意到其他数据库的选项可能也很有用.

mysql sql sql-order-by

144
推荐指数
6
解决办法
11万
查看次数

如何根据另一个数组的顺序对对象数组进行排序?

我有一个对象列表:

[ { id: 4, name:'alex' }, { id: 3, name:'jess' }, { id: 9, name:'...' }, { id: 1, name:'abc' } ]
Run Code Online (Sandbox Code Playgroud)

我有另一个正确的"订单"列表.

[ 3, 1, 9, 4]
Run Code Online (Sandbox Code Playgroud)

如何根据键"id"将第一个列表与第二个列表的顺序相匹配?结果应该是:

[ { id: 3, name:'jess' }, { id: 1, name:'abc' }, { id: 9, name:'...' }, { id: 4, name:'alex' } ]
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting algorithm json

13
推荐指数
4
解决办法
1万
查看次数

Sequelize如何添加自定义排序功能?

我有一个带有字符串列“grades”的表,其中包含以下内容['uni', '9','10',11','12'].我无法将此列更改为 Int。

我有以下排序代码:

Course.findAll({
  order: [
    ['grade', 'ASC']
  ],
...
Run Code Online (Sandbox Code Playgroud)

但按年级排序会给我以下顺序:

['10','11', '12', '9', 'uni' ]

显然我不希望它按这个顺序排列。我查看了 Sequelize 文档,他们似乎有一种方法可以提交用于排序的自定义函数,但我没有一个示例来说明它的样子:

// Will order by  otherfunction(`col1`, 12, 'lalala') DESC
[sequelize.fn('otherfunction', sequelize.col('col1'), 12, 'lalala'), 'DESC'],
Run Code Online (Sandbox Code Playgroud)

https://sequelize.org/master/manual/model-querying-basics.html#ordering-and-grouping

有谁知道执行此操作的方法?

javascript node.js sequelize.js

5
推荐指数
1
解决办法
3492
查看次数