按两列排序但只有一个顺序
Order By two columns but have one order
这个问题是 sequelize 特定的,但我想如果我在 SQL 中找到了一种方法,那么我可以在 sequelize
中找到一种方法
我需要通过使用 include
和 mockUser.fullname
连接的 user.fullname
返回请求,这是一个 JSON 字段。
但是要记住的一件重要事情是 user
在存在 mockUser
的情况下可以为空。
这是我目前所拥有的,它是按 mockUser.fullname
和 user.fullname
排序的,但是,它是分开排序的,这意味着有两个正确的订单,但它们没有被排序一个订单就是想要的结果。
const options = {
where: args,
include: ['user'],
limit,
offset,
order: [['user', 'fullname', 'ASC'], ['mockUser.fullname', 'ASC']]
}
SQL 上面 sequelize 表示的等价物,它由 sequelize 吐出但我清理了它
注意:它将每个“用户”.“列”转换为“user.column”
SELECT * FROM "table"
LEFT OUTER JOIN "user" ON "table"."userId" = "user"."id"
WHERE "table"."columnId" = '9efcbd5a-4dc7-4102-ad59-b6f6cd9adaa4'
ORDER BY "user"."fullname" ASC, ("table"."mockUser"#>>'{fullname}') ASC
LIMIT 10
OFFSET 0;
我正在使用 table
和 column
来混淆真实姓名
示例输出:
Adam Smith -> user
Beatrice Westfield -> user
John Smith -> user
Andy Brook -> mockUser
Mario Jimenez -> mockUser
Nadia Martinez -> mockUser
期望的输出:
Adam Smith -> user
Andy Brook -> mockUser
Beatrice Westfield -> user
John Smith -> user
Mario Jimenez -> mockUser
Nadia Martinez -> mockUser
如您所见,它首先对用户进行排序,然后对 mockUser 进行排序,但我如何将两者结合起来?
我想你在找
order by coalesce (user, mockUser)
在这种情况下,如果用户为空,它将按模拟用户排序。
这个问题是 sequelize 特定的,但我想如果我在 SQL 中找到了一种方法,那么我可以在 sequelize
中找到一种方法我需要通过使用 include
和 mockUser.fullname
连接的 user.fullname
返回请求,这是一个 JSON 字段。
但是要记住的一件重要事情是 user
在存在 mockUser
的情况下可以为空。
这是我目前所拥有的,它是按 mockUser.fullname
和 user.fullname
排序的,但是,它是分开排序的,这意味着有两个正确的订单,但它们没有被排序一个订单就是想要的结果。
const options = {
where: args,
include: ['user'],
limit,
offset,
order: [['user', 'fullname', 'ASC'], ['mockUser.fullname', 'ASC']]
}
SQL 上面 sequelize 表示的等价物,它由 sequelize 吐出但我清理了它
注意:它将每个“用户”.“列”转换为“user.column”
SELECT * FROM "table"
LEFT OUTER JOIN "user" ON "table"."userId" = "user"."id"
WHERE "table"."columnId" = '9efcbd5a-4dc7-4102-ad59-b6f6cd9adaa4'
ORDER BY "user"."fullname" ASC, ("table"."mockUser"#>>'{fullname}') ASC
LIMIT 10
OFFSET 0;
我正在使用 table
和 column
来混淆真实姓名
示例输出:
Adam Smith -> user
Beatrice Westfield -> user
John Smith -> user
Andy Brook -> mockUser
Mario Jimenez -> mockUser
Nadia Martinez -> mockUser
期望的输出:
Adam Smith -> user
Andy Brook -> mockUser
Beatrice Westfield -> user
John Smith -> user
Mario Jimenez -> mockUser
Nadia Martinez -> mockUser
如您所见,它首先对用户进行排序,然后对 mockUser 进行排序,但我如何将两者结合起来?
我想你在找
order by coalesce (user, mockUser)
在这种情况下,如果用户为空,它将按模拟用户排序。