MySQL查询按条件排序

标签 mysql sql

我有 3 个表:

a) master_car

  • 汽车编号
  • 车名

b) running_car

  • running_car_id
  • car_id [master_car 的外键]
  • 日期

c)最喜欢的车

  • 收藏夹编号
  • 汽车编号
  • 用户编号

跑车是主车日期明智的一个实例。因此,示例数据集:

ma​​ster_car:

car_id - car_name
1 - Mercedes C Class
2 - Audi
3 - Volkswagen

running_car:

running_car_id - car_id - date
1 - 1 - 9 sep 2015
2 - 1 - 10 sep 2015
3 - 1 - 11 sep 2015
4 - 1 - 12 sep 2015
5 - 2 - 10 sep 2015
6 - 2 - 11 sep 2015
7 - 3 - 10 sep 2015
8 - 3 - 10 sep 2015

用户可以将汽车标记为收藏

favourite_id - car_id - user_id
1 - 2 - 1
2 - 1 - 2

当用户登录时,他需要看到所有正在运行的汽车。但首先按他最喜欢的汽车排序,然后再按其他汽车排序。

例如。如果 user_id - 1 的用户登录,他需要看到以下结果:

running_car_id - car_id - date
5 - 2 - 10 sep 2015
6 - 2 - 11 sep 2015
1 - 1 - 9 sep 2015
2 - 1 - 10 sep 2015
3 - 1 - 11 sep 2015
4 - 1 - 12 sep 2015
7 - 3 - 10 sep 2015
8 - 3 - 10 sep 2015

要根据用户的喜好对结果进行排序的查询是什么?

最佳答案

您是根据 favourite_id 订购的,然后是日期,对吗?如果是这样,这样的查询应该有效。它将 running_car 连接到 favourite_car 表,并通过 Left Joins 仅选择用户最喜欢的汽车。然后,它按喜欢的顺序订购汽车,然后按不喜欢的顺序订购汽车。我不确定你是如何查询当前用户的,所以我会把它留给你插入。

Select R.*
From running_car R
Left Join favourite_car F on R.car_id = F.car_id and U.(current user_id) = F.user_id
Order by
    (case when F.favourite_id is not null then 1 else 2 end), date

关于MySQL查询按条件排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528246/

相关文章:

java - 使用 java、DB2、spring 和 hibernate 连接来自两个不同库的两个表

java - 选择查询以查找连续的最大日期

c# - 如何循环 SQL 参数列表和 WHERE 子句?或者更有效地获得结果?

sql - 从给定数据中查找下一个工作日期

MySQL 替换

php - 如何加快还包含 2500 万行 JOIN 的 SQL UPDATE

MySQL 组数据,每组和订单有 2 个结果

php - 正确的mysql查询来查询一个表并为另一个表查询提供信息

MySQL - 使用行中字段的 MAX 或 GREATEST 值更新列(不包括 NULL)

sql - 如何计算多个数组中的条目数