出于广告目的移动/旋转 SQL Server 查询的输出
我正在尝试创建一个查询,该查询将改变我网站上每个用户每次执行的结果。目标是使用 SQL Server 2008 数据库技术来实现这一目标。
例如,如果我有一个包含三行数据的表:
我试图找到一种方法来按名称升序选择此数据顺序,然后移动/旋转结果。
ID Name
1 Apple
2 Orange
3 Banana
用户 1 加载页面并看到
Apple
Banana
Orange
用户 1 重新加载同一页面,然后看到
Banana
Orange
Apple
用户 1 重新加载同一页面,然后看到
Orange
Apple
Banana
用户 2 等具有完全相同的体验,以相同的顺序旋转/移动结果。
我可以创建并存储任何必要的值,例如名字或姓氏或 ID。
是否有一个简单优雅的解决方案(查询、存储过程、函数等)可以在 SQL Server 级别完成此任务?
原因是让所有颜色都有机会显示在列表顶部,而不是按字母顺序 A 到 Z。
I am trying to create a query that will shift the results on each execution for each user on my website. Goal to accomplish this using SQL Server 2008 database technology.
For example if I have a table with three rows of data:
I am trying to find a way to select this data order by name ascending then shifting/rotating the result.
ID Name
1 Apple
2 Orange
3 Banana
User 1 loads a page and sees
Apple
Banana
Orange
User 1 reloads the same page and then sees
Banana
Orange
Apple
User 1 reloads the same page and then sees
Orange
Apple
Banana
User 2, etc have the exact same experience, rotating/shifting of the results in the same order.
I can create and store any values necessary such as the first or last name or ID.
Is there a simple elegant solution (query, stored procedure, function, etc) that will accomplish this task at the SQL Server level?
The reason being is to give all colors the opportunity to be displayed at the top of the list vs alphabetical ordered A to Z.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果 SQL Server 有序列和
nextval()
函数(如 PostgreSQL 或 Oracle),那么它可能就这么简单 - 假设您的基本排序是在 id 上,从 1 开始,没有漏洞:请参阅此处了解解决方法: Oracle 序列,但随后在 MS SQL Server 中。
使用问题中的新输入进行编辑
它可能看起来像这样:
为了让我的语法更清楚,我在 上编写了一个演示data.stackexchange.com
你可以去那里看看!
如果 SQL Server 有 LIMIT 和 OFFSET 之类的东西,这会更简单。
TOP
无法完成这项工作。请参阅:SQL Server 的 LIMIT 和 OFFSET 等效吗?If SQL Server had sequences and a
nextval()
function like PostgreSQL or Oracle it could be as simple as that - given your base sort were on id, starting at 1, without holes:See here for workarounds: Oracle sequence but then in MS SQL Server.
Edit with new input from question
It could look like this then:
To get my syntax straight, I wrote a demo on data.stackexchange.com
You can go there and check it out!
This would be simpler if SQL Server had something like LIMIT and OFFSET.
TOP
can't do the job. See: Equivalent of LIMIT and OFFSET for SQL Server?我不知道 SQL Server 查询的移位或旋转输出,但我正在尝试做同样的事情,并且我使用 NEWID() 来随机排序我的输出。
I don't know about shift or rotate output of SQL server query, but I'm trying to do it same you, and I use NEWID() to order random my outputs.