假设我有2张桌子,courses
和books
课程
| id | name | is_sort_by_borrower |
|----|--------------|---------------------|
| 1 | Comp Science | 1 |
| 2 | Biz Admin | 0 |
| 3 | Physics | 1 |
[books
| 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 |
是否可以按borrower
排序结果,按last_borrow_date
排序结果?
ref: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