簡體   English   中英

按兩列排序,但只有一個訂單

[英]Order By two columns but have one order

這個問題是特定於續集的,但我想如果我在 SQL 中找到一種方法,那么我可以在續集中找到一種方法

我需要通過user.fullname重新訂購請求,該請求通過使用includemockUser.fullname加入,這是一個 JSON 字段。

但是要記住的一件重要事情是,在存在mockUser的情況下, user可以為空。

這是我到目前為止所擁有的,它是通過mockUser.fullnameuser.fullname排序的,但是,它是分開進行的,這意味着有兩個正確的訂單,但它們沒有被排序為一個訂單,這是所需的結果。

      const options = {
        where: args,
        include: ['user'],
        limit,
        offset,
        order: [['user', 'fullname', 'ASC'], ['mockUser.fullname', 'ASC']]
      }

SQL 等效於上述續集表示,它被續集吐出,但我清理了它

注意:它將每個“user”.“column”變成“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;

我正在使用tablecolumn來混淆真實姓名

示例 output:

Adam Smith -> user
Beatrice Westfield -> user
John Smith -> user
Andy Brook -> mockUser
Mario Jimenez -> mockUser
Nadia Martinez -> mockUser

所需的 Output:

Adam Smith -> user
Andy Brook -> mockUser
Beatrice Westfield -> user
John Smith -> user
Mario Jimenez -> mockUser
Nadia Martinez -> mockUser

如您所見,它首先對用戶進行排序,然后對 mockUser 進行排序,但是我如何將兩者結合起來呢?

我想你正在尋找

order by coalesce (user, mockUser)

在這種情況下,如果用戶是 null,它將由 mockuser 訂購。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM