首页 > 解决方案 > 按子查询列值排序

问题描述

我想根据子查询表订购 SQL 查询。

我对选择每本喜欢的书的查询。我希望它按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)

这些都不起作用。未找到该列(第一次尝试)或我的语法出现错误(第二次尝试)。

标签: sqlsubquery

解决方案


我认为你根本不需要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).


推荐阅读