【问题标题】:MySQL: Sorting rows from 2 (or more) tables by their columnsMySQL:按列对 2 个(或更多)表中的行进行排序
【发布时间】:2011-11-20 00:37:41
【问题描述】:

我正在尝试按时间对来自不同表的数据进行排序.. 我有桌子:

书籍: book_id |书名 | book_time

电影: 电影ID |电影名 |电影时间

我想一起选择最新的书籍和电影。我想将其排序为: ORDER BY book_time DESC 但对于两张桌子。我尝试使用连接,但效果不是很好,而且速度也很慢。

【问题讨论】:

  • 我不明白您将如何加入这些表格;他们没有关系。
  • @IgnacioVazquez-Abrams 也许电影数据库是基于书籍的电影,movie_id 是 book_id 的外键。虽然我怀疑情况并非如此......
  • @PhpMyCoder:特别是因为它更好地表示为 M2M。
  • 这只是一个例子。我的桌子上没有书籍/电影。加入是个坏主意,我知道 :) 但现在我得到了答案。谢谢你们。

标签: mysql sql


【解决方案1】:

我通常尽量远离子查询,但是如果你把并集合二为一,你可以很容易地按时间排序:

SELECT id, name, time
FROM
(
    SELECT book_id id, book_name name, book_time time FROM books
    UNION
    SELECT movie_id id, movie_name name, movie_time time FROM movies
) booksandmovies
ORDER BY time DESC;

【讨论】:

  • +1:但我会考虑改用UNION ALL - 它更快,因为它不会删除重复项(UNION 会)。当然,有些书籍和电影名称相同,但 ID 和时间不太可能相同...
猜你喜欢
  • 2014-03-12
  • 2015-12-03
  • 2021-05-30
  • 2021-04-21
  • 1970-01-01
  • 2011-01-26
  • 2011-05-13
  • 1970-01-01
相关资源
最近更新 更多