gpt4 book ai didi

sql - 考虑用户偏好来处理排序结果-数据库

转载 作者:行者123 更新时间:2023-12-03 18:00:50 25 4
gpt4 key购买 nike

假设我们有一个包含以下数据的简单数据库:

        name
apple
pear
banana
grape


用户想要按名称对这些水果进行排序,我们将毫不奇怪

         apple
banana
grape
pear


但是,由于某些原因,用户希望将 pear作为第三个水果,这意味着他希望:

         apple
banana
pear
grape


而且,重要的是,当用户以后要按名称对水果进行排序时,用户希望保留此顺序。

我们应该如何解决这个问题?首先,我们可以添加一个字段 user_sort_id,当用户对排序结果进行排序和处理时,该字段将更新,并将其用作排序键。

                       init value       -> sort by name         ->place pear as the seconds
name user_sort_id
apple 0 0 0
pear 1 3 2
banana 2 1 1
grape 3 2 3


这种方法应在理论上起作用。但是,在实践中,我无法想到可以完成此操作的优雅而快速的SQL语句。有什么想法或选择吗?

最佳答案

如果希望每个用户都有独立的排序顺序,则需要另一个表。

CREATE TABLE user_sort_order (
name VARCHAR(?) NOT NULL REFERENCES your-other-table (name),
user_id INTEGER NOT NULL REFERENCES users (user_id),
sort_order INTEGER NOT NULL -- Could be float or decimal
);


然后订购很容易。

SELECT name 
FROM user_sort_order
WHERE user_id = ?
ORDER BY sort_order


没有更新的魔术子弹。


删除所有用户的行,并以新顺序插入行。 (强力总是有效的。)
用新订单更新每一行。 (可能是很多UPDATE语句。)
跟踪应用程序中的更改,并仅更新更改的行和必须由更改“碰撞”的行。 (简朴,但容易出错。)
不要让用户强加自己的排序顺序。 (通常,这个主意听起来并不差。)

关于sql - 考虑用户偏好来处理排序结果-数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com