在数据库中存储"有序列表"的最佳方法是什么,以便更新它们(添加,删除和更改条目的顺序)很容易?
考虑一个数据库,其中包含用户和电影的表格.每个用户都有一个喜欢的电影列表.
由于许多用户可以喜欢同一部电影,因此我将用户和电影分开,并使用第三张表连接它们,即用户电影.
usermovies包含用户和电影的ID以及"订单号".订单号用于为用户订购电影列表.
例如,用户Josh可能具有以下列表:
和用户杰克可能有一个列表,如:
因此,他们分享一些收藏,但不一定按照相同的顺序.
我可以使用查询获取每个用户的电影ID列表:
SELECT movie_id FROM usermovies WHERE user_id =? ORDER BY order_number
Run Code Online (Sandbox Code Playgroud)
然后,使用有序的movie_ids,我可以使用另一个查询获取电影列表
SELECT name FROM movies WHERE id in (?,?,?) ORDER BY FIELD (id, ?,?,?)
Run Code Online (Sandbox Code Playgroud)
所以查询工作,但更新列表现在看起来真的很复杂 - 是否有更好的方法来存储这些信息,以便很容易获得用户x的电影列表,添加电影,删除它们并更改列表的顺序?
我正在使用SQL Server在两行中交换两个值.让我展示:
[ord] [name]
1 John
4 Jack
7 Pete
9 Steve
11 Mary
Run Code Online (Sandbox Code Playgroud)
说,我需要交换[ord]数字为"Pete"和"Steve"使这个表格像这样:
[ord] [name]
1 John
4 Jack
9 Pete
7 Steve
11 Mary
Run Code Online (Sandbox Code Playgroud)
这似乎是一项微不足道的任务,但我似乎无法为它编写SQL UPDATE语句.