sql - 按子查询列值排序
问题描述
我想根据子查询表订购 SQL 查询。
- 表书(id、姓名、作者、日期)
- TABLE 用户(id、name、created)
- 表books_likes(user_id、book_id、日期)
我对选择每本喜欢的书的查询。我希望它按books_likes.date 排序,不使用连接而是更容易索引子查询
第一次尝试:
SELECT id
FROM books
WHERE id IN (SELECT book_id
FROM books_likes
WHERE user_id = 1)
ORDER BY books_likes.date
第二次尝试:
SELECT id
FROM books
WHERE id IN (SELECT book_id
FROM books_likes
WHERE user_id = 1
ORDER BY date)
这些都不起作用。未找到该列(第一次尝试)或我的语法出现错误(第二次尝试)。
解决方案
我认为你根本不需要join
。你应该试试:
SELECT bl.book_id
FROM books_likes bl
WHERE bl.user_id = 1
ORDER BY bl.date;
此查询应使用books_likes(user_id, date, book_id)
.
推荐阅读
- html - CSS - 按钮边框渐变
- java - 我无法将导航抽屉项目与相关活动和 fregmant 连接起来
- javascript - 解析嵌套的字符串化 json 对象
- javascript - Safari 不会在验证时执行 Recaptcha
- php - 带有 php 和 apache 的基本 dockerfile 不会挂载
- python - 如何让我的 Django API 同时为多个用户工作?
- vb.net - 带有可选参数语法错误的事件的 AddHandler
- svg - 在 gatsby 中动态渲染 svg
- c++ - vcpkg:忽略包的内部版本(qt5-base)并使用外部版本?
- azure-devops - 使用 AzureDeops 在 linux 和 windows 代理中运行时,Gulp 任务输出不同