根据另一列中的值按 column1 或 column2 对行进行排序

林俊杰

假设我有 2 张桌子:

课程

| id | name         | is_sort_by_borrower |
|----|--------------|---------------------|
| 1  | Comp Science | 1                   |
| 2  | Biz Admin    | 0                   |
| 3  | Physics      | 1                   |

图书

| id  | title  | borrower | last_borrow_date | course_id |
| --- | ------ | -------- | ---------------- | --------- |
| 1   | Book A | 523      | 11/12/19 12:33   | 1         |
| 2   | Book B | 423      | 11/15/19 12:33   | 1         |
| 3   | Book C | 401      | 10/22/19 12:33   | 1         |

有一个列is_sort_by_borrower课程,我想这样的结果

| course       | book_title | borrower | last_borrow_date | is_sort_by_borrower |
|--------------|------------|----------|------------------|---------------------|
| Comp Science | Book A     | 523      | 11/12/19 12:33   | 1                   |
| Comp Science | Book B     | 423      | 11/15/19 12:33   | 1                   |
| Comp Science | Book C     | 401      | 10/22/19 12:33   | 1                   |
| Comp Science | Book D     | 377      | 11/19/19 12:33   | 1                   |
| Biz Admin    | Book E     | 122      | 11/20/19 12:33   | 0                   |
| Biz Admin    | Book F     | 419      | 11/12/19 12:33   | 0                   |
| Biz Admin    | Book G     | 65       | 10/18/19 12:33   | 0                   |
| Physics      | Book H     | 446      | 8/31/19 12:33    | 1                   |
| Physics      | Book I     | 398      | 11/2/19 12:33    | 1                   |
| Physics      | Book J     | 376      | 9/30/19 12:33    | 1                   |
| Physics      | Book K     | 249      | 10/11/19 12:33   | 1                   |

是否可以将结果排序为 some by borrower, some by last_borrow_date

格多法尔

是的,在 SELECT 中创建另一列并使用 CASE 用您想要的值填充它,然后按它排序。您还可以在 WHERE 子句中使用 CASE 语句,具体取决于您是否希望排序列显示结果。

参考:MYSQL 按案例排序问题

参考:https : //dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html

在你的例子中:

SELECT
    c.id, c.name, c.is_sort_by_borrower, 
    b.id, b.title, b.borrower, b.last_borrow_date
FROM
    courses c
INNER JOIN
    books b on b.course_id = c.id
ORDER BY
    CASE 
        WHEN is_sort_by_borrower=1 THEN borrower
        WHEN is_sort_by_borrower=0 THEN last_borrow_date 
    END ASC

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PostgreSQL:使用升值更新column1,具体取决于column2的排序顺序

获取具有column1最小值和column2最大值大于100 DataFram的行

在熊猫中将Column1值转换为标头,将column2转换为其值

创建一个聚合函数,该函数返回与最大column2值关联的column1值

SQL中的“ UPDATE table SET column1 = value AND column2 value WHERE条件”是什么意思?

Oracle:如何用column1中的确切值搜索和替换column2中的文本?

Python Sqlite-如何选择Column1或Column2等于List中的值的位置?

通过唯一的column1 column2组合从pandas数据帧中转储JSON

每个ID具有多少“ column1”,“ column2”和“ total”,并按“ total”排序

如何选择具有不同日期条件的同一列值并在同一查询中显示为column1和column2

在Excel中根据column1排列column2

SQL:在column1上选择不重复,并汇总合并行的column2值

Informatica映射以将column1 position1的值分配给column2 position2

将仅不存在的行从column2插入column1中

将mysql中的值从column1复制到column2

SQL根据两行中column1中的值选择一column2

使用R,当同一行的Column2包含一个单词时,如何在“ column1”中获取“ cell”进行更新?

pandas :读取 xlsx 文件以使用 column1 作为键和 column2 作为值进行字典

根据 column1 的值将 column1 的值设置为 column2 的值

为数据集中存在的所有不同的 column2 值填充缺失的 column1 值

如何找到其他列(column2)的行值,如果我的行值在另一行的同一列(column1)中

如何构造单个 JSON,其中 column1 是属性名称,column2 是值

比较 column1(选项集)与 SSIS 中 column2(查找)中的设置值

在 PostgresQL 表中,如何使用 column1 中的所有值创建列,而 column1 中当前行的值出现在 column2 中?

Pandas Python groupby 多列 - 根据具有特定值的第一列按列 2 中的值对行进行排序

熊猫在 column1 中查找匹配项并更新 column2 上的相应行

删除 column2 的重复项,然后根据 column1 将它们分组,然后将 sql 中 column3 的值相加

在 R 中的数据框中,Column1 的值是 Column2 的最小值

R:对于 dfs 列表,过滤 Column1 中的值,以提取另一个 Column2 的平均值和 SD(仅在 Column1 中具有过滤值的行)