如何显示按另一个表数据行排序的表数据


How to display table data ordered by another table data row?

我有视频watch_later MYSQL 表,我想在按日期排序的页面中显示视频数据watch_later我当前的视频表如下所示

id  |  name         | views
1   |  funny video  | 40
2   |  sad video    | 20

我目前的watch_later表看起来像这样

id  |  video_id  | date
1   |  2         | 2016-02-01
2   |  1         | 2016-02-02

我尝试从按日期排序watch_later表中选择所有 id,然后从 id IN 的视频表中选择所有数据(以前的 id),但这并不能让我获得按日期排序的视频数据watch_later

(如果我不明白,我只想做一个像YouTube这样的稍后观看系统。

您必须使用JOIN语法执行查询:

"SELECT videos.*, watch_later.date 
 FROM videos 
 JOIN watch_later ON videos.id=watch_later.video_id
 ORDER BY watch_later.date DESC"

如果您希望按升序排序,请将DESC替换为 ASC

使用此查询,您将从表中选择videos字段和date watch_later

有多种JOIN方法:如果你想学习它,看看w3schools

编辑:

我选择选择videos的所有字段,并且由于watch_later.id字段而只选择watch_later.date字段:实际上,使用SELECT *语法会使该字段被具有相同名称的以下字段覆盖,从而导致 - 在这种特定情况下 - 结果中丢失videos.id

只需要在video_id字段中连接表:

SELECT * FROM videos INNER JOIN watch_later 
  ON videos.id=watch_later.video_id 
  ORDER BY watch_later.date dESC