我有视频和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