mysql - 查询一个表中的所有项目,但按另一个不包含所有项目的表排序

标签 mysql ruby-on-rails

我有一个表 products,其中包含产品的 idname

第二个表是 products_last_usage,我在其中保存了 product_iduser_idlast_used_at

每当用户点击产品时,我都会更新字段 last_used_at

现在,我需要一个查询来列出所有 产品,并首先按 last_used_at 排序,然后按产品名称排序。它必须是每个用户。即每个用户都有自己的表格顺序。

但我需要所有产品,即使第二个表中没有它们的记录。

怎么做?

你可以帮我做一个rails查询或者mysql查询。

最佳答案

您可以使用左连接:

select p.*
from products p left join
     products_last_usage plu
     on plu.product_id = p.id and plu.user_id = $user_id
order by (last_used_at is not null) desc, last_used_at desc;

last_used_at desc 排序也应该有效。但是,我认为显式处理 NULL 值会更清楚。

关于mysql - 查询一个表中的所有项目,但按另一个不包含所有项目的表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034486/

相关文章:

ruby-on-rails - 在 ruby​​ 文件中,如何获得另一个 ruby​​ 文件的结果?

ruby-on-rails - Rails 中的 ActiveRecord 查询

ruby-on-rails - Rails 列出所有有效的内容类型

java - 是否有 Hibernate 注释可以筛选无效的 MySQL 日期?

php - mysqli connect() 使用 IP 地址时收到错误消息

ruby-on-rails - 排名位置

ruby-on-rails - 启动 Rails 脚手架时出现 OSX Ruby 错误 : Could not load OpenSSL

php - 我如何使用 PHP 将数组插入 mysql?

MySQL Won't Source, then won't connect

c++ - 无需为 MySQL 创建查询的库?